正如关于Google代码的问题中所记录的,当Redis客户端无法跟上消息被PUBLISHed发送到通道的速度时,Redis会为该客户端维护一个不断增长的消息积压,并随着时间的推移使用越来越多的内存。
我想检测这是什么时候发生的,并从它得到警报,或至少能够检查哪些公共订阅者有积压和他们有多大。有办法这样做吗?
发布于 2016-08-05 12:37:51
https://code.google.com/archive/p/redis/issues/525中描述的错误不再存在。虽然没有记录的方法可以获得PubSub客户端跟不上的高级警告,但Redis将关闭来自慢速客户端的连接,以保护自己不会耗尽内存,并通过日志文件通知您。根据医生们:
输出缓冲区限制..。客户端可能发送更多的命令,产生更多的输出,以更快的速度提供服务,Redis可以以更快的速度将现有的输出发送给客户机。对于Pub/Sub客户端尤其如此,以防客户端不能足够快地处理新消息。这将导致客户端输出缓冲区增长并消耗越来越多的内存。因此,默认情况下,Redis为不同类型的客户端设置输出缓冲区大小的限制。当达到限制时,客户端连接将关闭,并将事件记录在Redis日志文件中。Redis使用的限制有两种:
不同类型的客户有不同的默认限制:.
..。可以在运行时使用CONFIG SET命令或使用Redis配置文件redis.conf永久更改限制。有关如何设置限制的更多信息,请参见Redis发行版中的示例redis.conf。
https://serverfault.com/questions/750166
复制相似问题