首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

解決 MySQL 8 小時空閒連線自動斷開:修改 wait_timeout 徹底根治

     編輯:MySQL 資料庫相關知識

問題現象

應用與資料庫建立連線後,超過 8 小時無訪問,資料庫主動斷開。再次查詢拋出異常:

Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913) ...

根本原因

MySQL 預設 wait_timeout = 28800 秒(8 小時)。超過此時間無活動,服務器關閉連線。舊版常用連線字串加 autoReconnect=true,但 **MySQL 新版已無效**。

徹底解決:調大 wait_timeout

啟動參數或配置檔設定:

mysqld-nt --default-table-type=innodb --interactive_timeout=288000

或在 my.ini/my.cnf [mysqld] 區段加入:

wait_timeout = 288000
interactive_timeout = 288000

重啟服務生效。建議設 10 倍(288000 秒 = 80 小時)或更大,視業務需求。

補充建議

  • 應用層仍需實現連線池驗證機制(如定期 SELECT 1、testOnBorrow),雙重保險。
  • interactive_timeout 針對互動式客戶端(如 mysql 命令列),wait_timeout 針對非互動式(JDBC 連線池),通常同值設定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved