說明:
根據調查發現以上服務器線程緩存thread_cache_size沒有進行設置,或者設置過小,這個值表示可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那麼客戶端的線程將被放到緩存中,如果線程重新被請求,那麼請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那麼這個線程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能.通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。(-->表示要調整的值) 根據物理內存設置規則如下:
1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64
優化方法:
1、mysql> set global thread_cache_size=16
2、編輯/etc/my.cnf 更改/添加
--------
thread_concurrency = 16
--------
1、MySQL服務器的線程數查看方法:
show global status like 'Thread%';
Threads_created:創建過的線程數,如果發現Threads_created值過大的話,表明MySQL服務器一直在創建線程,這也是比較耗資源,可以適當增加配置文件中thread_cache_size值
2、優化參數thread_cache_size
thread_cache_size:當客戶端斷開之後,服務器處理此客戶的線程將會緩存起來以響應下一個客戶而不是銷毀(前提是緩存數未達上限)
即可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那麼客戶端的線程將被放到緩存中,如果線程重新被請求,那麼請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那麼這個線程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能。
thread_cache_size大小的設置:
如果是短連接,適當設置大一點,因為短連接往往需要不停創建,不停銷毀,如果大一點,連接線程都處於取用狀態,不需要重新創建和銷毀,所以對性能肯定是比較大的提升。
對於長連接,不能保證連接的穩定性,所以設置這參數還是有一定必要,可能連接池的問題,會導致連接數據庫的不穩定性,也會出現頻繁的創建和銷毀,但這個情況比較少,如果是長連接,可以設置成小一點,一般在50-100左右。
物理內存設置規則:通過比較Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。(-->表示要調整的值) 根據物理內存設置規則如下:
1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64
查詢thread_cache_size設置
show global status like'thread_cache_size';
優化方法:
1、mysql> set global thread_cache_size=16
2、編輯/etc/my.cnf 更改/添加
thread_concurrency = 16
3、mysql kill線程
mysqladmin start slave stop slave kill某個連接到mysqlServer的線程