佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > MySQL thread_stack連接線程的優(yōu)化

MySQL thread_stack連接線程的優(yōu)化

熱門標(biāo)簽:服務(wù)外包 Linux服務(wù)器 百度競價(jià)排名 鐵路電話系統(tǒng) AI電銷 呼叫中心市場需求 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化

MySQL連接不僅能通過網(wǎng)絡(luò)方式,還可以通過命名管道的方式,不論是哪種方式連接MySQL,在MySQL中都是通過線程的方式管理所有客戶端請求的。每一個(gè)客戶端連接都會(huì)有一個(gè)與之對應(yīng)的連接線程。在MySQL中實(shí)現(xiàn)了一個(gè)Thread Cache池,將空閑的連接線程存放其中,而不是完成請求后就銷毀。這樣,當(dāng)有新的連接請求時(shí),MySQL首先會(huì)檢查Thread Cache中是否存在空閑連接線程,如果存在則取出來直接使用,如果沒有空閑連接線程,才創(chuàng)建新的連接線程。具體參數(shù):
Thread_cache_size:Thread Cache池中應(yīng)該存放的連接線程數(shù)。
Thread_stack:每個(gè)連接線程被創(chuàng)建時(shí),MySQL給它分配的內(nèi)存大小。當(dāng)MySQL創(chuàng)建一個(gè)新的連接線程時(shí),需要給它分配一定大小的內(nèi)存堆??臻g,以便存放客戶端的請求的Query及自身的各種狀態(tài)和處理信息。
查看連接線程相關(guān)的系統(tǒng)變量的設(shè)置值: show variables like 'thread%';

mysql> show variables like 'thread%';
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| thread_cache_size | 32 |
| thread_stack | 196608 |
+-------------------+--------+
2 rows in set (0.00 sec)

如圖,系統(tǒng)設(shè)置了Thread Cache池最多將緩存25個(gè)連接線程,每個(gè)連接線程創(chuàng)建之初,系統(tǒng)分配192KB的內(nèi)存堆棧給它。
查看系統(tǒng)被連接的次數(shù)及當(dāng)前系統(tǒng)中連接線程的狀態(tài)值

mysql> show status like 'connections';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 620 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%thread%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 3 |
| Threads_connected | 4 |
| Threads_created | 7 |
| Threads_running | 1 |
+------------------------+-------+
6 rows in set (0.00 sec)

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

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

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

針對16G/32G的機(jī)器,一般設(shè)置 512K

當(dāng)然如果遇到下面的錯(cuò)誤提示就應(yīng)該考慮增加這個(gè)值了。

mysql-debug: Thread stack overrun

bug info

報(bào)錯(cuò)信息:
java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

官方相應(yīng)信息:

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

可以使用

show variables where `variable_name` = 'thread_stack';

查詢當(dāng)前數(shù)據(jù)庫的默認(rèn)線程棧的大小,一般情況下都能正常使用,但是當(dāng)查詢語句或者存儲(chǔ)過程復(fù)雜時(shí)會(huì)報(bào)Thread stack overrun錯(cuò)誤,此時(shí)只要修改默認(rèn)配置就可以。

解決

windows: 修改mysql安裝目錄下的my-small.ini或者my.ini設(shè)置為256k,或者更大,然后重啟服務(wù)

[mysqld]
thread_stack = 256k
linux: 同樣要修改配置文件,但是?。。?,不是安裝目錄下的配置文件,是/etc/my.cnf,只有這個(gè)文件才能生效,然后重啟服務(wù)service mysql restart

[mysqld]
thread_stack = 256k

您可能感興趣的文章:
  • MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
  • Mysql Error Code : 1436 Thread stack overrun
  • mysql -參數(shù)thread_cache_size優(yōu)化方法 小結(jié)
  • Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer
  • MySQL高速緩存啟動(dòng)方法及參數(shù)詳解(query_cache_size)
  • MySQL性能優(yōu)化之table_cache配置參數(shù)淺析
  • mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
  • 優(yōu)化mysql之key_buffer_size設(shè)置
  • mysql Key_buffer_size參數(shù)的優(yōu)化設(shè)置

標(biāo)簽:仙桃 崇左 銅川 蘭州 衡水 黃山 湘潭 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL thread_stack連接線程的優(yōu)化》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    龙里县| 荔浦县| 滦南县| 塔河县| 嘉峪关市| 巫山县| 故城县| 广汉市| 南开区| 沅陵县| 凤翔县| 芜湖市| 松潘县| 寻甸| 河曲县| 浮梁县| 崇阳县| 济源市| 封丘县| 宁陕县| 库尔勒市| 广河县| 康乐县| 洛宁县| 龙井市| 宁晋县| 万荣县| 敦煌市| 尼木县| 沾益县| 丽水市| 礼泉县| 夏邑县| 泗洪县| 华容县| 榆林市| 晋州市| 饶河县| 乐昌市| 平武县| 桐城市|