Redis慢日志始终显示ManagementCommand

时间:2020-06-03 21:15:48

标签: redis stackexchange.redis

我正在尝试诊断我们遇到的一些Redis性能问题;具体来说,在Azure Redis缓存中使用3个分片的群集,我们经常会出现如下错误群集:

Endpoint <ip and port> serving hashslot <some hash slot> is not reachable at this point of time. Please check connectTimeout value. If it is low, try increasing it to give the ConnectionMultiplexer a chance to recover from the network disconnect.  IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=69,Free=8122,Min=1,Max=8191), Local-CPU: n/a

我怀疑Worker忙于比Min高很多,但是我认为我无法在Azure产品中对此进行任何调整,因此我正在研究可以在客户端执行的操作。我们在StackExchange.Redis 1.2.6上(代码库是.Net 4.5,因此不能轻易地迁移到2.x代码)。我们没有指定connectTimeout,所以我看到的默认值为5000毫秒;不过,我在下一个版本中添加了显式的connectTimeout。

我首先查看SLOWLOG,但是在“ SLOWLOG GET 5”中的每个条目中,“运行了什么命令”项都有一个(字面上)长900+项的列表,每个项中的第一项列表是“ ManagementCommand”,但此后还有其他项目:


shard1>slowlog get 5
1) 1) (integer) 2732
   2) (integer) 1591198499
   3) (integer) 24019
   4)  1) "ManagementCommand"
       2) "account:123456:name"
       3) "account:62151:email"
       4) "post:575992991:notified"
<etc etc etc>
       31) "product:858111:desc"
       32) "... (882 more arguments)"
   5) "ip address goes here"
   6) ""
2) 1) (integer) 2731
   2) (integer) 1591198499
   3) (integer) 19374
   4)  1) "ManagementCommand"
       2) "friend:111aaa95"
       3) "account:119:kablammo"
<etc etc etc>
       31) "liked:5858aabba"
       32) "... (993 more arguments)"
 3) <you get the idea>

对我来说,我们的实现似乎有些怪异,这可能会有所贡献;每次我们使用特定的字符串键调用内部RedisStorage类时,它都会创建一个“组合键”字符串,该字符串是传入键和一些其他代码的组合,然后在Redis中使用传入键创建一个集合,向该集合添加一个新项,即组合键,并将该组合键项的值设置为随超时传入的值。

但是,尝试搜索“什么是ManagementCommand,如何处理它很慢”以及“此操作的24k和20k微秒甚至'慢',并且我正在拨错树”?证明没有成果。

以前有人看过吗?

0 个答案:

没有答案