mysql線上負載高怎麼排查

做爲一個開發人員或者數據庫管理員,學會檢查數據庫運行狀況是必不可少的工做。形成MySQL線程卡頓的緣由有不少,可是不管是哪一種緣由,咱們發現問題以後的第一要務就是解決問題,防止問題繼續惡化。那麼,應該如何操做?mysql

查找線程

有兩種方法能夠查看正在運行的線程。sql

  1. 進入到mysql/bin目錄下,執行mysqladmin processlist數據庫

  2. 連上MySQL,輸入show processlist;命令查看線程

  3. show variables like "%max_connections";

咱們用Navicat登陸localhost簡單看一下,結果以下:blog

如何kill掉卡頓的MySQL線程?

結果中每一行對應一個鏈接,每一列的含義以下:進程

Id:thread_id,線程id;ssl

User:用戶,若是你不是root,那麼只能看到權限範圍內的SQL;開發

Host:能夠看到來源IP和端口,結合netstat或lsof命令可快速定位進程;io

db:當前DB實例;class

Command:當前執行的命令,一般是sleep、query、connect ;

Time:當前狀態持續了多少秒;

State:當前狀態;

Info:當前語句;

若是是鏈接數過小了,能夠適當修改一下,超時時間太長的話一樣直接改小就行。

其次,用戶增加太猛,這個時候就須要添加機器了。

殺死線程

執行kill id命令便可殺死卡頓的線程

常見緣由

形成線程卡頓的緣由有不少,可是不少時候一般只有兩種:

  1. 鎖競爭

  2. 慢查詢

相關文章
相關標籤/搜索