最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL CPU過高的排查方法

 更新時間:2023年11月24日 11:37:25   作者:宋丹敏  
這篇文章主要介紹了MySQL CPU過高的排查方法,通過top命令查看服務(wù)器CPU資源使用情況,明確CPU占用率較高的是否是mysqld進(jìn)程,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

一. 問題鎖定

在這里插入圖片描述

通過top命令查看服務(wù)器CPU資源使用情況,明確CPU占用率較高的是否是mysqld進(jìn)程,如果是則可以明確CUP飄高的原因就是MySQL數(shù)據(jù)庫導(dǎo)致的。

二. QPS激增會導(dǎo)致CPU飄高

分析:

在這里插入圖片描述

(引用網(wǎng)圖)

在有監(jiān)控工具的情況下,通過查看CPU利用率曲線圖和QPS曲線圖進(jìn)行對比,如果CPU曲線圖和QPS曲線圖波動情況基本保持一致,出現(xiàn)CPU過高則必然和QPS激增有關(guān)系,至此可以明確CUP過高是QPS上升導(dǎo)致。反之,如果CUP曲線圖對比QPS曲線圖有不同步的峰值抖動,則說明在QPS未明顯激增的情況下,CPU出現(xiàn)飄高,則大概率跟慢SQL有關(guān),可以進(jìn)行后續(xù)的慢SQL排查分析。

解決(依據(jù)情況選用以下辦法):

● 如果是實際業(yè)務(wù)激增導(dǎo)致則可以通過資源擴充,滿足業(yè)務(wù)激增的業(yè)務(wù)需求。

● 找到具體激增的查詢所對應(yīng)應(yīng)用系統(tǒng)的接口,進(jìn)行限流控制,以保護數(shù)據(jù)庫并發(fā)訪問量。

● 應(yīng)用采用讀寫分離,降低單點訪問壓力。

● 查看SQL是否存在循環(huán)插入或更新的情況,改動批量操作。

備注:

● 如果沒有監(jiān)控工具協(xié)助QPS分析的情況下,可以通過show global status like ‘Questions’ 和show global status like 'Uptime’查詢,將兩者相除得到就是QPS值。

三. 慢SQL會導(dǎo)致CPU飄高

分析(通過show processlist)

在這里插入圖片描述

通過show processlist查看當(dāng)前MySQL線程運行情況,主要通過 Time 連接時間和State當(dāng)前SQL所處的狀態(tài)來分析慢SQL,一般情況下如果存在Sending data說明該查詢較慢,可以將info中的SQL復(fù)制出來通過explain查看詳細(xì)的執(zhí)行計劃進(jìn)行分析。

分析(通過MySQL自帶的慢SQL日志功能)

通過root登錄數(shù)據(jù)庫開啟慢SQL查詢?nèi)罩?,set global slow_query_log = ‘ON’,并設(shè)置慢SQL過濾時間set global long_query_time = 1(超過1秒視為慢SQL),指定慢SQL日志文件存放路徑set global slow_query_log_file = ‘/var/lib/mysql/test_1116.log’。通過持續(xù)觀察該慢SQL記錄日志文件,查找出具體的慢SQL復(fù)制出來通過explain查看詳細(xì)的執(zhí)行計劃進(jìn)行分析。

解決(依據(jù)情況選用以下辦法)

● 緊急處理先通過 kill process id,先kill對應(yīng)線程,緩解問題。

● 無索引或者索引失效,新建有效索引或者優(yōu)化SQL語句。

● SQL中有大量聚合操作:簡化SQL,將邏輯提煉到業(yè)務(wù)代碼中;聚合操作異步化或預(yù)處理。

● SQL返回的數(shù)據(jù)過多:分頁查詢。

● 讀寫較多鎖競爭激烈:分庫分表或讀寫分離。

四. 大量空閑連接會導(dǎo)致CPU飄高

分析:

在這里插入圖片描述

通過 show full processlist 查看Comand 有大量的Sleep,再根據(jù)Time查看裝填時間是否很長,如果存在大量長時間睡眠線程占用數(shù)據(jù)庫連接,會導(dǎo)致數(shù)據(jù)庫的吞吐量下降,進(jìn)而導(dǎo)致阻塞也會引發(fā)CPU飄高的現(xiàn)象。

解決:

● 修改mysql配置文件中的 wait_timeout 空閑等待時間,值越小則相對空閑線程就會越少,重啟mysql生效。

● 也可以通過 set global wat_timeout=xx 方式熱修改該參數(shù)。

五. MySQL問題排查常用命令

5.1 SQL 執(zhí)行計劃,進(jìn)行SQL執(zhí)行分析。

explain + sql 。

在這里插入圖片描述

5.2 查看數(shù)據(jù)庫當(dāng)前執(zhí)行線程狀態(tài)

show full processlist : 其中重點字段包括Comand 、Time 、State、Info,可以查看當(dāng)前所有連接線程中命令、持續(xù)時間、狀態(tài)、對應(yīng)的SQL信息。

5.3 查看當(dāng)前運行的所有事務(wù)

在這里插入圖片描述

select * from information_schema.INNODB_TRX : 在執(zhí)行結(jié)果中可以看到是否有表鎖等待或者死鎖,如果有死鎖發(fā)生,可以通過下面的命令來殺掉當(dāng)前運行的事務(wù):KILL trx_mysql_thread_id 。

5.4 查看當(dāng)前出現(xiàn)的鎖

select * from information_schema.INNODB_LOCKS:在改結(jié)果中可以看到鎖的類型、所屬事務(wù)ID、鎖級別、鎖模式等信息。

5.5 查看死鎖

SELECT b.trx_state, e.state, e.time, d.state AS block_state, d.time AS block_time
, a.requesting_trx_id, a.requested_lock_id, b.trx_query, b.trx_mysql_thread_id, a.blocking_trx_id
, a.blocking_lock_id, c.trx_query AS block_trx_query, c.trx_mysql_thread_id AS block_trx_mysql_tread_id
FROM information_schema.INNODB_LOCK_WAITS a
LEFT JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id = b.trx_id
LEFT JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id = c.trx_id
LEFT JOIN information_schema.PROCESSLIST d ON c.trx_mysql_thread_id = d.id
LEFT JOIN information_schema.PROCESSLIST e ON b.trx_mysql_thread_id = e.id
ORDER BY a.requesting_trx_id;

5.5 查看InnoDB狀態(tài)

SHOW ENGINE INNODB STATUS

以上就是MySQL CPU過高的排查方法的詳細(xì)內(nèi)容,更多關(guān)于MySQL CPU過高排查的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL導(dǎo)出ER圖為圖片或PDF的操作方法

    MySQL導(dǎo)出ER圖為圖片或PDF的操作方法

    這篇文章主要介紹了MySQL導(dǎo)出ER圖為圖片或PDF的操作方法,文章通過圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • MySQL外鍵設(shè)置的方法實例

    MySQL外鍵設(shè)置的方法實例

    這篇文章主要介紹了MySQL外鍵設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • mysql?count()函數(shù)不計算null和空值問題

    mysql?count()函數(shù)不計算null和空值問題

    這篇文章主要介紹了mysql?count()函數(shù)不計算null和空值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql中int(1)、int(20)的區(qū)別小結(jié)

    Mysql中int(1)、int(20)的區(qū)別小結(jié)

    本文主要介紹了Mysql中int(1)、int(20)的區(qū)別小結(jié),int后的數(shù)字表示最大顯示寬度,一般int后面的數(shù)字M要配合zerofill一起使用才有效,下面就來具體介紹一下,感興趣的可以了解一下
    2025-03-03
  • 解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無法啟動的方法

    解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無法啟動的方法

    這篇文章主要給大家介紹了關(guān)于解決MySQL因不能創(chuàng)建 PID 導(dǎo)致無法啟動的方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • Mysql恢復(fù)誤刪庫表數(shù)據(jù)完整場景演示

    Mysql恢復(fù)誤刪庫表數(shù)據(jù)完整場景演示

    在開發(fā)和在生產(chǎn)中總會出現(xiàn)各種各樣的失誤和意味,當(dāng)MySQL的數(shù)據(jù)或表被刪除后不要慌,下面這篇文章主要給大家介紹了關(guān)于Mysql恢復(fù)誤刪庫表數(shù)據(jù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • MySQL報錯:sql_mode=only_full_group_by的4種輕松解決方法(含舉例)

    MySQL報錯:sql_mode=only_full_group_by的4種輕松解決方法(含舉例)

    今天學(xué)mysql函數(shù)的時候在自己服務(wù)器上的MySQL碰見了個奇怪的問題,下面這篇文章主要給大家介紹了關(guān)于MySQL報錯:sql_mode=only_full_group_by的4種輕松解決方法,需要的朋友可以參考下
    2023-01-01
  • Mysql忘記密碼的幾種解決方案

    Mysql忘記密碼的幾種解決方案

    今天小編就為大家分享一篇關(guān)于Mysql忘記密碼的幾種解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Mysql鎖機制,行鎖表鎖的使用詳解

    Mysql鎖機制,行鎖表鎖的使用詳解

    這篇文章主要介紹了Mysql鎖機制,行鎖表鎖的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • mysql日志文件之undo?log和redo?log

    mysql日志文件之undo?log和redo?log

    MySQL日志記錄了MySQL數(shù)據(jù)庫日常操作和錯誤信息,MySQL有不同類型的日志文件,下面這篇文章主要給大家介紹了關(guān)于mysql日志文件之undo?log和redo?log的相關(guān)資料,需要的朋友可以參考下
    2022-04-04

最新評論

肃南| 镇雄县| 萨迦县| 临朐县| 瑞安市| 蒙城县| 双鸭山市| 萍乡市| 邛崃市| 新安县| 长寿区| 鹰潭市| 桃园县| 喀喇沁旗| 葵青区| 盐亭县| 安顺市| 临安市| 图木舒克市| 龙川县| 安丘市| 青海省| 城口县| 大城县| 英吉沙县| 慈利县| 平湖市| 昭平县| 德安县| 仁怀市| 石家庄市| 巴东县| 五寨县| 桓台县| 新田县| 洱源县| 和顺县| 如东县| 滕州市| 枝江市| 图木舒克市|