mysql - 如何顯式修改數(shù)據(jù)庫連接超時時間
問題描述
spring + mybatis
redis.incr(key); //redis計數(shù)加一try{ dbOPerHere(); //數(shù)據(jù)庫操作}catch (Exception e){ //若數(shù)據(jù)庫操作失敗 減一 redis.decr(key); }
想模擬網(wǎng)路異常 數(shù)據(jù)庫連接超時異常 通過如下方式模擬數(shù)據(jù)庫連接異常
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
但發(fā)現(xiàn)要等差不多三分鐘 才會有超時異常另外一個奇怪現(xiàn)象 同樣的數(shù)據(jù)源配置 若換成測試服務(wù)器 超時時間為6分鐘 不知何故
Caused by: java.net.ConnectException: Connection timed out
如何顯式設(shè)置數(shù)據(jù)庫連接超時時間(如超時時間5秒), 不管是配置數(shù)據(jù)源 還是 修改mysql服務(wù)器的變量?使用的數(shù)據(jù)源如下
<bean destroy-method='close'>
或修改mysql服務(wù)器變量
>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()具體是做什么的,僅供參考,并期待問題后續(xù)。
相關(guān)文章:
1. 網(wǎng)頁爬蟲 - python 爬取網(wǎng)站 并解析非json內(nèi)容2. mysql - 把一個表中的數(shù)據(jù)count更新到另一個表里?3. mysql replace 死鎖4. mysql - 字符串根據(jù)字典替換5. python如何不改動文件的情況下修改文件的 修改日期6. 老師您的微信號是多少?7. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處8. node.js - nodejs開發(fā)中常用的連接mysql的庫9. 雙擊安裝程序,安裝不了10. 視頻文件不能播放,怎么辦?
