原文:
https://blog.csdn.net/joeyon1985/article/details/39126685
時近中午醒來,看了一下新聞,做了十幾分鍾的室內運動,洗澡之后發現脖子有點疼,可能昨晚睡覺給扭到了。下班街頭看美女都不好扭脖子。現在項目急,每天更新,然后修bug.。出問題的風險也越來越高,7號公司網站就出現,響應很慢的情況,最后排除發現是機房出口帶寬不夠用了。囧,今天寫周報,發現數據庫服務器CPU的wa%值增加的很快,排查了一下,發現是mongodb的一個集合寫入磁盤時間太慢,而且並發也挺高才導致的。
所以這篇日志是用來記錄處理過程的。
1)Top命令查看一下,確認情況。
CPU1跟CPU8兩個wa%值很高。
2)iotop –o 查看那些進程正在讀寫磁盤。
觀察了一段時間發現讀寫數據量不大但是很頻繁。
3)觀察一下mongodb的日志看看是不是有類似mysql的慢查詢操作
祭出強大的awk篩選出操作時間超過一秒的記錄
1 |
#awk '!/authenticate/&&!/connection/{gsub(/ms/,"",$NF);if($NF>=1000){print$0}}' /var/log/mongdb.log |
滿屏幕的update操作,來自db_imaibo_live庫下面的cs_combination_stock_log集合而且操作基本都在四秒以上。
4)上報朝廷。。。。跟開發工程師反應之后,了解到這個集合一天生成3萬多的記錄,現在總記錄已經有280多萬了,每次update都要先掃描整個集合,好悲傷的感覺。
5)商討之后,備份集合,清理數據,調整業務邏輯,收工!