我们使用Redis作为产品解决方案的一部分是相当新的,所以我们很可能在这里遗漏了一些东西。当我运行命令时,redis-cli infor | grep client命令我看到这样的数字:
connected_clients:472 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0
在我们的两台服务器上。我们使用最新的StackExchange运行Redis 2.8。 Redis客户端库。我们为主/从配置了两个Redis实例。我们通过SSIS包将数据加载到Redis,最终用户应用程序是只读应用程序。目前我们只在DEV环境中遇到这种情况,因为在我们能够稳定主/从配置之前,我们只会在QA和生产环境中运行一个Redis实例。
返回DEV环境。有一段时间,客户端抛出的错误表明由于连接问题而无法执行任何操作,所以我们的想法是越来越多的老化连接与此问题有关。我们将服务器端超时设置配置为一小时,并注意到在服务器上清理客户端连接时有相当大的改进。这似乎有点诀窍,但今天早上我再一次看到旧的连接在我身边感觉不对。
我还没有看到任何错误,但我猜我应该担心有数百个老年人的关系。以下是一些客户端连接的示例:
id = 59096 addr = 192.168.60.1:57530 fd = 668 name = RCTFSBUILD1 age = 505900 idle = 502315 flags = N db = 0 sub = 1 psub = 0 multi = -1 qbuf = 0 qbuf-free = 0 obl = 0 oll = 0 omem = 0 events = r cmd = unsubscribe id = 59861 addr = 192.168.60.1:58363 fd = 1434 name = RCTFSBUILD1 age = 505833 idle = 502253 flags = N db = 0 sub = 1 psub = 0 multi = -1 qbuf = 0 qbuf-free = 0 obl = 0 oll = 0 omem = 0 events = r cmd = unsubscribe
很明显,我认为这些连接都与发布/订阅频道以及收听通知的客户端有关。为什么这些连接没有得到清理?如果您还注意到,这些连接来自我们的构建服务器,我们经常运行验收测试。每次连接都不是这样,但我会“假设”一旦客户端进程以任何方式完成连接将被清理。
只是寻找一些建议,需要关注的领域,想知道我是否需要关注,这是预期的等等。
我希望这足以让其他人了解这个问题。
谢谢!