2017-07-19 76 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