通過redis的monitor命令排除故障

林堯彬發表於2020-04-04

專案裡有10臺伺服器都在一個刀箱裡,其中一臺是redis快取伺服器,另外的是app伺服器。通過監控發現這個刀箱的流量750M,其中快取伺服器的流量達105M,這麼高的流量已經造成其它專案的伺服器網路延時,丟包,已經影響了正常的業務。通過分析基本可以斷定流量產生來自於app伺服器對redis伺服器資料呼叫,至於為什麼為產生大流量,需要進一步分析,redis的monitor命令可以實時列印出 redis 伺服器接收到的命令,我們就通過這些資料進行分析。

 

1、抓取幾分鐘的資料,然後手動終止命令(我取了7分鐘,70多萬行資料):

redis-cli monitor >19-2.txt  

wc -l 19-2.txt
784565 19-2.txt

2、取關鍵字GET的進行分析,統計key的get次數:

awk '/GET/{a[$3]++}END{for(i in a)print i"\t"a[i]}' 19-2.txt |sort -k2nr|more

3、通過type命令檢視發現排名第1的key型別是string型別,將value get出來儲存到一個檔案,du一下發現竟然有1.6M。在7分鐘之內get了17000多次,折算下來平均每秒鐘產生約70M的流量,再加上其它key的讀寫產生的流量應該有100M左右,和監控到的流量差不多,最後查到這個key是上週上線後才有的。將情況告訴開發,變更儲存方式,更改程式碼連夜上線,問題解決。

 

轉載於:https://www.cnblogs.com/Eivll0m/p/4553377.html

相關文章