SHOW PROCESSLIST 大量 Sleep 狀態連接佔據 max_connections,新請求報「Too many connections」,服務器 CPU/內存飆升甚至崩潰。
mysqli_close() 或 PDO=null。[mysqld] # 非交互式連接(應用程序)閒置超過 100 秒自動斷開 wait_timeout = 100 # 交互式連接(客戶端工具)閒置超時 interactive_timeout = 100
service mysqld restart # 或 Windows net stop mysql && net start mysql
[mysqld] # 降低表緩存與定義緩存,減少內存佔用 table_open_cache = 256 # 原 2000 table_definition_cache = 400 # 原 1400
Opened_tables / Open_tables 比值調整。close(),或使用連接池(HikariCP/Druid)配置 maxLifetime、idleTimeout。slow_query_log,EXPLAIN 分析加索引、改寫 SQL,降低單查詢耗時。Threads_connected、Threads_running、Aborted_connects,閾值告警。mysql> SHOW GLOBAL STATUS LIKE 'Threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 15 | -- 大幅下降 +-------------------+-------+
配置生效後,Sleep 進程數顯著下降,連接池穩定,服務器負載恢復正常。