2017-07-19 75 views

回答

0

如果您對您的Redis實例運行「客戶端列表」命令,您應該能夠看到連接到您的redis實例的客戶端的整個列表及其IP地址。然後您可以查看哪些客戶端(服務)與您的Redis實例的連接數最多。

+0

如何檢查哪個客戶端的連接數最多? – Maria

+0

該命令僅爲您提供每個連接的IP地址和名稱。您可以爲每個連接命名,也許可以通過在每個連接上添加或追加客戶端名稱。您需要彙總此信息以確定哪個IP地址或客戶端具有最多的連接。 –

+0

是否可以從IP地址獲取環境名稱? – Maria

0

您可以鍵入命令「客戶名單」,你會看到這些名字:

id=39 addr=127.0.0.1:34706 fd=7 name= age=141156 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client 
id=78 addr=127.0.0.1:58014 fd=5 name= age=63779 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=llen 
id=80 addr=127.0.0.1:36826 fd=6 name= age=46776 idle=1685 flags=N db=1 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=del 

最有用的密鑰你的回答是「年齡」 & &「空閒」,「年齡」是指以秒爲單位的連接總持續時間和「空閒」表示此連接的空閒時間。所以(年齡 - 閒置)/年齡相關的客戶端使用服務器的CPU比其他客戶端的價值更小,但不是非常精確

其他命令也可以給你一些建議,如「INFO」和「MONITOR」。 INFO爲您提供有關redis服務器的統計信息,例如內存使用情況,處理的命令,CPU使用情況,連接的客戶端等,您可以參考this以獲取更多信息。

「MONITOR」爲您提供實時顯示,說明現在發生了什麼,正在執行什麼命令,誰發送了此命令。也許你可以使用MONITOR輸出來計算每個客戶端資源。

例如 對於每個命令,您首先解析它並使用成本來添加客戶端成本總和。在耗時的計算中,SET是O(1),Lrange是O(N)。但是,這很難做到這一點。但您可以使用以下命令記錄此事件:

redis-cli monitor > redis-command.log 

您可以使用此日誌做一些分析。但請注意,MONITOR命令會降低您的redis服務器吞吐量,請檢查this

+0

謝謝。還有一件事,是否可以從IP地址獲取環境名稱?我正在使用boto3,但無法找到如何獲取環境名稱 – Maria