mysql - 如何显式修改数据库连接超时时间
问题描述
spring + mybatis
redis.incr(key); //redis计数加一try{ dbOPerHere(); //数据库操作}catch (Exception e){ //若数据库操作失败 减一 redis.decr(key); }
想模拟网路异常 数据库连接超时异常 通过如下方式模拟数据库连接异常
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
但发现要等差不多三分钟 才会有超时异常另外一个奇怪现象 同样的数据源配置 若换成测试服务器 超时时间为6分钟 不知何故
Caused by: java.net.ConnectException: Connection timed out
如何显式设置数据库连接超时时间(如超时时间5秒), 不管是配置数据源 还是 修改mysql服务器的变量?使用的数据源如下
<bean destroy-method='close'>
或修改mysql服务器变量
>show variables like ’%timeout%’;+-----------------------------+----------+| Variable_name | Value |+-----------------------------+----------+| connect_timeout | 10 || delayed_insert_timeout | 300 || innodb_flush_log_at_timeout | 1|| innodb_lock_wait_timeout | 50 || innodb_rollback_on_timeout | OFF || interactive_timeout | 28800 || lock_wait_timeout | 31536000 || net_read_timeout | 30 || net_write_timeout | 60 || rpl_stop_slave_timeout | 31536000 || slave_net_timeout | 3600 || wait_timeout| 28800 |+-----------------------------+----------+
问题解答
回答1:/** * <strong>BasicDataSource does NOT support this method. </strong> * * <p>Set the login timeout (in seconds) for connecting to the * database.</p> * <p> * Calls {@link #createDataSource()}, so has the side effect * of initializing the connection pool.</p> * * @param loginTimeout The new login timeout, or zero for no timeout * @throws UnsupportedOperationException If the DataSource implementation * does not support the login timeout feature. * @throws SQLException if a database access error occurs */ public void setLoginTimeout(int loginTimeout) throws SQLException {// This method isn’t supported by the PoolingDataSource returned by// the createDataSourcethrow new UnsupportedOperationException('Not supported by BasicDataSource');//createDataSource().setLoginTimeout(loginTimeout); }
* <strong>BasicDataSource does NOT support this method. </strong> *
以上是dbcp连接池的源代码,不知道这个LoginTimeout()具体是做什么的,仅供参考,并期待问题后续。
相关文章:
1. 管理员信息修改时的密码问题2. angular.js - 输入邮箱地址之后, 如何使其自动在末尾添加分号?3. javascript - 后台管理系统左侧折叠导航栏数据较多,怎么样直接通过搜索去定位到具体某一个菜单项位置,并展开当前菜单4. javascript - html5的data属性怎么指定一个function函数呢?5. 如何解决docker宿主机无法访问容器中的服务?6. android - RxJava 中有根据条件执行不同函数的操作符吗?7. javascript - 如何使用nodejs 将.html 文件转化成canvas8. mysql - 电商如何存储营业额数据9. html5 - 为什么使使用vue cli 脚手架,post-css 没有自动对css3属性自动添加浏览器前缀呢?10. java如何生成token?
