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

解決 MySQL 拒絕服務(連線耗盡)的實用調優參數

     編輯:MySQL 資料庫相關知識

現象

MySQL 連線數耗盡導致新連線被拒絕,常見於長連線未釋放、連線池洩漏或攻擊。

緩解方案

  1. 升級版本:若未使用 5.x 新特性,考慮回退至 4.0/4.1 穩定版。
  2. 定時重啟:在低峰期重啟 MySQL 服務釋放殭屍連線(需配合監控腳本)。
  3. 調整逾時參數:修改 my.cnf [mysqld] 區段:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
wait_timeout = 500000
interactive_timeout = 500000

wait_timeout 控制非互動連線閒置斷開時間(預設 28800 秒 = 8 小時),設大可減少頻繁重連開銷,但也可能累積殭屍連線;建議依業務特性設定 1~2 天(172800 秒)較為平衡。修改後重啟 MySQL 生效,或啟動時加參數 mysqld -O wait_timeout=500000。若不生效嘗試重啟主機。

驗證

mysql> SHOW VARIABLES LIKE 'wait_timeout';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| wait_timeout  | 500000 |
+---------------+--------+

根治建議

  • 應用層使用連線池並正確歸還連線。
  • 設定 max_connections 與 max_user_connections 限制單用戶佔用。
  • 啟用 performance_schema 監控連線狀態。
  • 前端加 WAF/限流防禦惡意連線耗盡。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved