ActiveMQ消息堆積問題


簡潔說明:
由於是公司項目,這里簡單說下過程。
現象:
業務報表,時報表總數與日報表總數對不上

排查過程:
1.瀏覽器控制台看是調用的接口,找到對應相關代碼
2.報表的記錄是其他服務通過ActiveMQ同步過來,找到相關隊列
3.進入后台查看服務日志是否有報錯,查看服務進程是否還在,由於是老項目,部署在tomcat下,
tomcat占用cpu並不高
4.進入ActiveMQ的控制台,找到對應的隊列,發現待消費的消息堆積的很多,並且還在持續增長
5.找到監聽消息的代碼查看打印日志信息,通過日志發現大部分1秒消費一條消息,有時2~3秒才消費一條消息
6.top看到mysql占用cpu較高,這時想是否業務有sql執行較慢
7.使用 show full processlist指令查看數據庫中服務鏈接有沒有占用時間長的sql(服務器上binlog開啟,慢查詢日志沒開啟),
找到兩條執行時間異常的sql,navicat查看執行計划都是全表掃描的,並且兩條sql都是查同一張表,查看表結構沒有索引。
大佬的傳送門
8.最后表增加索引,查看mq控制台隊列,消息逐漸被消費不再增加堆積


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM