日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化

發布時間:2025/3/15 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解決問題:

  • 怎樣查看Mysql最大連接數(max_connections)?怎樣修改max_connections?
  • 怎樣查看Mysql線程緩存池數量(thread_cache_size)?thread_cache_size的作用?優化?
  • 怎樣查看Mysql線程的狀態(Threads_cached/Threads_connected/Threads_running/Threads_running)?
  • 怎樣理解Threads_cached/Threads_connected/Threads_running/Threads_running?以及它們和并發量的關系?
  • 怎樣使用doDBA工具?

?

1. 怎樣查看Mysql最大連接數?怎樣修改?

1.1 查看MySQL最大連接數?

登錄Mysql:mysql -u username -p password

show variables like '%max_connections%';

?

1.2 修改MySQL最大連接數?

修改mysql的配置文件。

vi /etc/my.cnf

修改或添加:max_connections=1000(需要的值)

重啟mysql:systemctl restart mysqld

如果修改失敗,參見博客:MySQL 修改最大連接數(max_connections)失效,上限214問題

?

2.怎樣查看Mysql線程緩存池數量(thread_cache_size)?thread_cache_size的作用?優化?

2.1 查看

登錄mysql

show variables like '%thread_cache_size%';

?

2.2 理解

“每個Mysql客戶端連接都會在服務器進程中擁有一個線程,這個連接的查詢只會在這個單獨的線程中執行,該線程只能輪流在某個CPU核心或者CPU中運行。服務器會負責緩存線程,因此不需要為每一個新建的連接創建或者銷毀線程。”(來著《高性能MySQL》)

意思是如果Mysql客戶端新建一個連接,那么Mysql服務器就需要為這個連接創建一個線程。如果Mysql線程緩存池中有線程,那么就直接從緩存區刪除這個線程,并且把它分配給這個新的連接使用。節省了創建連接的開銷。當連接關閉時,如果線程緩存還有空間的話,MySQL又會把線程返回緩存。如果沒有空間,Mysql會銷毀這個線程。

?

2.3 修改

修改mysql的配置文件。

vi /etc/my.cnf

修改或添加:thread_cache_size=300(需要的值)

重啟mysql:systemctl restart mysqld

?

2.4 優化建議(優化建議來自《高性能MySQL》)

thread_cache_size變量指定了MySQL可以保持在緩存中的線程數。一般不需要配置這個值,除非服務器有很多連接請求。如果我們觀察到很少有每秒創建的新線程數少于10個的時候,通常應該嘗試保持線程緩沖足夠大,但是實際上經常可能看到每秒少于1個新線程的情況。

一個好的辦法是觀察Threads_connected變量并且嘗試設置thread_cache_size足夠大以便能處理業務壓力正常的波動。如果它保持在100-120,則可以設置為20;如果保持在500-700,200的線程緩存應該足夠大了。

?

3.怎樣查看Mysql線程的狀態?

登錄mysql

show status like 'thread%';

Threads_cached:當前線程緩存還有多少線程。

Threads_connected:當前已連接的MySQL線程數。這個值不會超過max_connections,也許會超過1或2個,不用管它。

Threads_created:這個值是個累加值,表示MySQL服務器為連接創建的線程數?有待考證!

Threads_running:表示當前正在運行的連接數,這個數會遠小于Threads_connected,這是正常情況。

?

4.?怎樣理解Threads_cached/Threads_connected/Threads_running/Threads_running?以及它們和并發量的關系?

沒有高并發時,這四個狀態為:

1000并發時,這四個狀態為:(參考)

當高并發開始時,Threads_cached的值會減少,Threads_created值幾乎不變,Threads_connected值持續增加;當Threads_cached的值減少為0后,Threads_createds值增加(波動會大于10),Threads_connected值持續增加;直到Threads_connected值穩定,這個值和max_connections有關系,此時Threads_cached值為0,Thread_created值不變,Threads_connected值不變。

當高并發結束后,Threads_connected值會減少,Threads_cached值會恢復成最初值(thread_cache_size配置決定。)

以上就是高并發時,MySQL線程的變化情況。

?

優化建議:(以下建議,來自踩坑)

合理的Threads_cached值,能在高并發開始時,讓MySQL更快的進入狀態,因為它會節省很多創建線程的開銷。Threads_connected值上不去,首先看看max_connections的值是多少,如果有連接池,看看連接池配置的最大連接數是多少,如果數據庫連接池(比如Druid)最大Active連接數只有500,那Threads_connected最多只能到501(用MySQL性能檢測工具可以看到),如果還是上不去,就需要具體分析了。

?

5.?怎樣使用doDBA工具?

5.1 在linux上部署doDBA

安裝:

wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA --no-check-certificate wget https://raw.githubusercontent.com/dblucyne/dodba_tools/master/doDBA.conf --no-check-certificate chmod +x doDBA

修改配置文件:

運行:

監控Mysql:./doDBA -h 192.168.43.167 -mysql

監控系統:./doDBA -h 192.168.43.167 -sys

?

?(轉載請標明出處)

?

轉載于:https://www.cnblogs.com/mungerz/p/10413457.html

總結

以上是生活随笔為你收集整理的Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。