說明:
根據調查發現以上伺服器線程緩衝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的線程