亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

MySQL連接線程之Thread參數(shù)調(diào)優(yōu)

IT那活兒 / 4425人閱讀
MySQL連接線程之Thread參數(shù)調(diào)優(yōu)
點(diǎn)擊上方藍(lán)字關(guān)注我哦


一、MySQL線程概述

thread_cache_size 功能在mysql數(shù)據(jù)庫(kù)配置文件中是非常重要的一項(xiàng)功能了,如果對(duì)thread_cache_size優(yōu)化做得好我們可以讓服務(wù)器跑得非???,設(shè)置不好就會(huì)發(fā)現(xiàn)很小訪問量就非常的卡。

MySQL連接除了能通過網(wǎng)絡(luò)方式,還可以通過命名管道的方式,不論是哪種方式連接MySQL,在MySQL中都是通過線程的方式管理所有客戶端請(qǐng)求的。每一個(gè)客戶端連接都會(huì)有一個(gè)與之對(duì)應(yīng)的連接線程。

在MySQL中實(shí)現(xiàn)了一個(gè)Thread Cache池,將空閑的連接線程存放其中,而不是完成請(qǐng)求后就銷毀。這樣當(dāng)有新的連接請(qǐng)求時(shí),MySQL首先會(huì)檢查Thread Cache中是否存在空閑連接線程,如果存在則取出來直接使用,如果沒有空閑連接線程,才創(chuàng)建新的連接線程。


二、線程參數(shù)介紹


具體參數(shù):

Thread_cache_size:ThreadCache池中應(yīng)該存放的連接線程數(shù)。

查詢Thread_cache_size的配置:

show variables like "thread_cache_size";



Thread_stack:每個(gè)連接線程被創(chuàng)建時(shí),MySQL給它分配的內(nèi)存大小。當(dāng)MySQL創(chuàng)建一個(gè)新的連接線程時(shí),需要給它分配一定大小的內(nèi)存堆棧空間,以便存放客戶端的請(qǐng)求的Query及自身的各種狀態(tài)和處理信息。

查看連接線程相關(guān)的系統(tǒng)變量的設(shè)置值:show variables likethread_cache%;如上圖,系統(tǒng)默認(rèn)連接線程設(shè)置thread_cache_size=64,通過分析計(jì)算連接線程池最多將緩存約三十個(gè)連接線程左右,每個(gè)連接線程創(chuàng)建之初,系統(tǒng)分配一定的內(nèi)存堆棧給這些線程。




三、生產(chǎn)環(huán)境的調(diào)優(yōu)

查看系統(tǒng)被連接的次數(shù)及當(dāng)前系統(tǒng)中連接線程的狀態(tài)值:

show status like connections;



show status like %thread%;



如果我們?cè)贛ySQL服務(wù)器配置文件中設(shè)置了thread_cache_size,當(dāng)客戶端斷開之后,服務(wù)器處理此客戶的線程將會(huì)緩存起來以響應(yīng)下一個(gè)客戶而不是銷毀(前提是緩存數(shù)未達(dá)上限)。

Threads_created:表示創(chuàng)建過的線程數(shù),如果發(fā)現(xiàn)Threads_created值過大的話,表明MySQL服務(wù)器一直在創(chuàng)建線程,這也是比較耗資源,可以適當(dāng)增加配置文件中thread_cache_size值。

根據(jù)官網(wǎng)資料和生產(chǎn)實(shí)際環(huán)境驗(yà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ī)則如下:



1、Thread Cache參數(shù)分析

系統(tǒng)啟動(dòng)到現(xiàn)在共接受到客戶端的連接10246394次,共創(chuàng)建了2766個(gè)連接線程,當(dāng)前有8個(gè)連接線程處于和客戶端連接的狀態(tài),而49個(gè)連接狀態(tài)的線程中只有一個(gè)處于active 狀態(tài),即只有一個(gè)正在處理客戶端提交的請(qǐng)求,而在ThreadCache池中共緩存了49個(gè)連接線程。

Thread Cache 命中率:

Thread_Cache_Hit = (Connections - Threads_created) / Connections *100%;一般在系統(tǒng)穩(wěn)定運(yùn)行一段時(shí)間后,ThreadCache命中率應(yīng)該保持在90%左右才算正常。

實(shí)際應(yīng)用:

針對(duì)16G/32G的機(jī)器,一般設(shè)置512K夠用了,當(dāng)然如果遇到下面的錯(cuò)誤提示就應(yīng)該考慮增加這個(gè)值。

2、thread_cache_size參數(shù)設(shè)置分析

如果是短連接,適當(dāng)設(shè)置大一點(diǎn),因?yàn)槎踢B接往往需要不停創(chuàng)建,不停銷毀,如果大一點(diǎn),連接線程都處于取用狀態(tài),不需要重新創(chuàng)建和銷毀,所以對(duì)性能肯定是比較大的提升。

對(duì)于長(zhǎng)連接,不能保證連接的穩(wěn)定性,所以設(shè)置這參數(shù)還是有一定必要,可能連接池的問題,會(huì)導(dǎo)致連接數(shù)據(jù)庫(kù)的不穩(wěn)定性,也會(huì)出現(xiàn)頻繁的創(chuàng)建和銷毀,但這個(gè)情況比較少,如果是長(zhǎng)連接,可以設(shè)置成小一點(diǎn),一般在50-100左右。

3、Thread Stack參數(shù)報(bào)錯(cuò)

根據(jù)業(yè)務(wù)側(cè)后臺(tái)java程序進(jìn)行數(shù)據(jù)處理時(shí),thread_stack報(bào)錯(cuò)提示進(jìn)行分析,并提供解決方法如下。



官方相關(guān)thread_stack的信息分析:

The default (192KB) is large enough for normal operation. If thethread stack size is too small, it limits the complexity of the SQLstatements that the server can handle, the recursion depth of storedprocedures, and other memory-consuming actions.

根據(jù)官方對(duì)該參數(shù)的信息分析如下:

Thread Stack默認(rèn)值(192KB)足夠正常運(yùn)行。如果線程堆棧大小太小,則會(huì)限制服務(wù)器可以處理的SQL語(yǔ)句的復(fù)雜性,存儲(chǔ)過程的遞歸深度以及其他消耗內(nèi)存的操作。可以使用showvariables where `variable_name` =“thread_stack”;查詢當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)線程棧的大小,一般情況下都能正常使用,但是當(dāng)查詢語(yǔ)句或者存儲(chǔ)過程復(fù)雜時(shí)會(huì)報(bào)Threadstack overrun(超限)錯(cuò)誤,此時(shí)只要修改增加默認(rèn)配置就可以了。


四、Thread的配置修改

解決方法:

在數(shù)據(jù)庫(kù)中修改配置文件my.cnf只有這個(gè)文件才能生效,然后重啟服務(wù)數(shù)據(jù)庫(kù)。

[mysqld] 

thread_stack = 512k

thread_cache_size = 64

重啟數(shù)據(jù)庫(kù)之后:



通過以上處理方式,根據(jù)業(yè)務(wù)側(cè)后臺(tái)java程序調(diào)取數(shù)據(jù)過程中發(fā)生thread_stack報(bào)錯(cuò),進(jìn)行調(diào)優(yōu),然后通知業(yè)務(wù)側(cè)重新開啟java程序數(shù)據(jù)處理目前一切正常。

END


長(zhǎng)按二維碼識(shí)別
精彩內(nèi)容早知道



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/130042.html

相關(guān)文章

  • 性能優(yōu)化MySQL調(diào)優(yōu)

    摘要:顯示處于不可中斷的休眠的進(jìn)程數(shù)量。我們可以實(shí)用內(nèi)存數(shù)據(jù)庫(kù),替代他的功能。 MySQL對(duì)于很多Linux從業(yè)者而言,是一個(gè)非常棘手的問題,多數(shù)情況都是因?yàn)閷?duì)數(shù)據(jù)庫(kù)出現(xiàn)問題的情況和處理思路不清晰。在進(jìn)行MySQL的優(yōu)化之前必須要了解的就是MySQL的查詢過程,很多的查詢優(yōu)化工作實(shí)際上就是遵循一些原則讓MySQL的優(yōu)化器能夠按照預(yù)想的合理方式運(yùn)行而已。 showImg(https://seg...

    NervosNetwork 評(píng)論0 收藏0
  • Java經(jīng)典

    摘要:請(qǐng)注意,我們?cè)诹牧膯卧獪y(cè)試遇到問題多思考多查閱多驗(yàn)證,方能有所得,再勤快點(diǎn)樂于分享,才能寫出好文章。單元測(cè)試是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。 JAVA容器-自問自答學(xué)HashMap 這次我和大家一起學(xué)習(xí)HashMap,HashMap我們?cè)诠ぷ髦薪?jīng)常會(huì)使用,而且面試中也很頻繁會(huì)問到,因?yàn)樗锩嫣N(yùn)含著很多知識(shí)點(diǎn),可以很好的考察個(gè)人基礎(chǔ)。但一個(gè)這么重要的東西,我為什么沒有在一開始...

    xcold 評(píng)論0 收藏0
  • 后臺(tái)開發(fā)常問面試題集錦(問題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<