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