標紅的是mysql的線程id
潁泉ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
解釋:看事務表INNODB_TRX,里面是否有正在鎖定的事務線程,看看ID是否在show processlist里面的sleep線程中,如果是,就證明這個sleep的線程事務一直沒有commit或者rollback而是卡住了,我們需要手動kill掉。
搜索的結果是在事務表發現了很多任務,這時候最好都kill掉。
批量刪除事務表中的事務
我這里用的方法是:通過information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語句臨時文件,然后執行臨時文件中生成的指令。
kill掉以后再執行SELECT * FROM information_schema.INNODB_TRX; 就是空了。
這時候系統就正常了
可以先使用 uptime 命令查看 CPU 平均負載
那個 2 users 表示用戶連接數,指的是總連接數。
那個 load average 就是系統平均負載,1 分鐘、5 分鐘、15 分鐘系統負載的平均值。
指的是一段時間內 CPU 正在處理以及等待 CPU 處理的進程數之和的統計信息,也就是 CPU 使用隊列的長度的統計信息。這個數字越小越好。
然后再用 vmstat 命令看下 CPU 是否飽和
這里面的 r 就是等待 CPU 的進程數,可以用來判定 CPU 是否飽和,當 r 值高于 CPU 數時,就意味著飽和了。
最右邊那個 us,sy,id,wa,st 表示所有 CPU 的使用百分比。它們分別是 user time,system time,idle,wait I/O 和 steal time 的縮寫。將 us 和 sy 的百分比加和,可以確定 CPU 是否處于忙碌狀態。
如果是多核的機器還可以使用 mpstat 命令查看是否均衡
與 CPU 相關的命令還有 pidstat
這個命令展示了 CPU 消耗在了哪些進程上面,消耗過大的進程需要格外關注下。
基本上你使用上述幾個命令 就可以初步了解 CPU 出現了何種問題
有了猜測的方向之后 你就可以進一步深入去排查了
mysql服務器最近偶爾出現cpu百分百居高不下的情況,所以需要進行分析
兄弟命令 show processlist;只列出前100條,如果想全列出請使用show full processlist;
先 簡單說一下各列的含義和用途:
正在將表中修改的數據刷新到磁盤中,同時正在關閉已經用完的表。這是一個很快的操作,如果不是這樣的話,就應該確認磁盤空間是否已經滿了或者磁盤是否正處于重負中。
Connect Out
復制從服務器正在連接主服務器。
Copying to tmp table on disk
由于臨時結果集大于 tmp_table_size,正在將臨時表從內存存儲轉為磁盤存儲以此節省內存。
Creating tmp table
正在創建臨時表以存放部分查詢結果。
deleting from main table
服務器正在執行多表刪除中的第一部分,剛刪除第一個表。
deleting from reference tables
服務器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。
Flushing tables
正在執行 FLUSH TABLES,等待其他線程關閉數據表。
Killed
發送了一個kill請求給某線程,那么這個線程將會檢查kill標志位,同時會放棄下一個kill請求。MySQL會在每次的主循環中檢查kill標志 位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被其他線程鎖住了,那么kill請求會在鎖釋放時馬上生效。
Locked
被其他查詢鎖住了。
Sending data
正在處理 SELECT 查詢的記錄,同時正在把結果發送給客戶端。
Sorting for group
正在為 GROUP BY 做排序。
Sorting for order
正在為 ORDER BY 做排序。
Opening tables
這個過程應該會很快,除非受到其他因素的干擾。例如,在執 ALTER TABLE 或 LOCK TABLE 語句行完以前,數據表無法被其他線程打開。 正嘗試打開一個表。
Removing duplicates
正在執行一個 SELECT DISTINCT 方式的查詢,但是MySQL無法在前一個階段優化掉那些重復的記錄。因此,MySQL需要再次去掉重復的記錄,然后再把結果發送給客戶端。
Reopen table
獲得了對一個表的鎖,但是必須在表結構修改之后才能獲得這個鎖。已經釋放鎖,關閉數據表,正嘗試重新打開數據表。
Repair by sorting
修復指令正在排序以創建索引。
Repair with keycache
修復指令正在利用索引緩存一個一個地創建新索引。它會比 Repair by sorting 慢些。
Searching rows for update
正在講符合條件的記錄找出來以備更新。它必須在 UPDATE 要修改相關的記錄之前就完成了。
Sleeping
正在等待客戶端發送新請求.
System lock
正在等待取得一個外部的系統鎖。如果當前沒有運行多個 mysqld 服務器同時請求同一個表,那么可以通過增加 --skip-external-locking參數來禁止外部系統鎖。
U pgrading lock
INSERT DELAYED 正在嘗試取得一個鎖表以插入新記錄。
Updating
正在搜索匹配的記錄,并且修改它們。
User Lock
正在等待 GET_LOCK()。
Waiting for tables
該線程得到通知,數據表結構已經被修改了,需要重新打開數據表以取得新的結構。然后,為了能的重新打開數據表,必須等到所有其他線程關閉這個表。以下幾種 情況下會產生這個通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE。
waiting for handler insert
INSERT DELAYED 已經處理完了所有待處理的插入操作,正在等待新的請求。
大部分狀態對應很快的操作,只要有一個線程保持同一個狀態好幾秒鐘,那么可能是有問題發生了,需要檢查一下。
還有其他的狀態沒在上面中列出來,不過它們大部分只是在查看服務器是否有存在錯誤是才用得著。
文章轉自:
根據返回結果中的PROCESLIST_INFO等信息,來判斷其執行的語句是否可以進行優化
如果覺得先從分析線程入手比較麻煩,也可以直接通過查詢當前正在執行的查詢入手
直接找出當前下大執行的查詢,按執行時間倒充值,占用CPU高的查詢往往耗時也比較長
Mysql thread 與 OS thread
mysql show processlist排查問題
MySQL處在高負載環境下,磁盤IO讀寫過多,肯定會占用很多資源,必然CP會U占用過高。
占用CPU過高,可以做如下考慮:
1.打開慢查詢日志,查詢是否是某個SQL語句占用過多資源,如果是的話,可以對SQL語句進行優化,比如優化 insert 語句、優化 group by 語句、優化 order by 語句、優化 join 語句等等;
2.考慮索引問題;
3.定期分析表,使用optimize table;
4.優化數據庫對象;
5.考慮是否是鎖問題;
6.調整一些MySQL Server參數,比如key_buffer_size、table_cache、innodb_buffer_pool_size、innodb_log_file_size等等;
7.如果數據量過大,可以考慮使用MySQL集群或者搭建高可用環境。
本文題目:mysqlcpu怎么查,查看mysql cpu使用率
網址分享:http://vcdvsql.cn/article2/hspjoc.html
成都網站建設公司_創新互聯,為您提供軟件開發、ChatGPT、商城網站、網站維護、網站改版、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯