mysql> SHOW GLOBAL STATUS LIKE 'Thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 46 |
| Threads_connected | 2 |
| Threads_created | 570 |
| Threads_running | 1 |
+-------------------+-------+
啟用後,客戶端斷線時執行緒不銷毀而是放入快取池(上限 `thread_cache_size`),下一新連線直接複用,避免 `pthread_create`/`pthread_destroy` 系統呼叫開銷。
-- 若 Threads_created / Uptime (秒) > 1 甚至更高,需調大 thread_cache_size
-- 範例:570 / 86400 ≈ 0.006 (健康)
-- 若 1 小時建立 1000 個執行緒 → 0.27/秒 → 需調優
mysql> SHOW VARIABLES LIKE 'thread_cache_size';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 64 |
+-------------------+-------+
-- 動態調整 (立即生效)
SET GLOBAL thread_cache_size = 128;
-- 永久生效請寫入 my.cnf [mysqld] 區段
| 最大連線數 | 建議 thread_cache_size |
|---|---|
| < 100 | 16~32 |
| 100~500 | 64~128 |
| > 500 | 128~256 |
上限不宜超過 `max_connections`,且觀察 `Threads_cached` 是否長期接近上限(代表快取池足夠)。