我在EC2集群上运行resque。我有大约10个工作程序在2个大型实例上运行,而另一个大型实例运行redis本身,但每3分钟resque工作程序被杀死,因为与redis的套接字连接超时。
之前有没有人遇到过这个问题?
答案 0 :(得分:1)
也许您想在 redis.conf 中设置timeout=0
,这样您的服务器就可以让您的客户无限期地闲置。默认值为300秒(五分钟)。
另一种选择是安排让您的客户每隔几分钟发出一次Redis PING命令(响应应该是字符串“PONG”)。我没有看到Resque的任何选项为你提供这种保持活力(虽然我确实看到对keepalive patch for Resque的引用。
(如果我实现像Resque这样的东西我会使用BLPOP或BRPOP中的任何一个或BRPOPLPUSH使用非零超时选项来支持类似于select()
的类似轮询的东西。因此应用程序唤醒每分钟左右,即使队列闲置做一些内务处理(包括运行“PING”)。