即使远程进程停止,套接字仍保持 ESTABLISHED

即使远程进程停止,套接字仍保持 ESTABLISHED

我正在客户端和服务器之间运行celery-配置。rabbitmq客户端进程在服务器上的端口 5672 打开一个连接。netstat -np在服务器上使用我确认,因为套接字报告已建立。

客户端上的进程崩溃并且不再存在。但netstat -np仍然显示连接已建立。我还在客户端上运行netstat -np,并确认没有进程在该端口上连接到服务器。

为什么套接字保持 ESTABLISHED 状态?

答案1

AMQP需要如果客户端未正确关闭连接(对于长时间运行的任务),连接的服务器端将保持打开状态。阅读更多内容这个帖子

您可以使用手动关闭这些连接,rabbitmqctl或者编写一个脚本来从 cron 作业中执行此操作,但这两种方法对于应用程序级问题来说都是相当丑陋的外部方法。

如果可以的话,打开心跳并将超时设置为比已知最长处理任务多 15-20%。这应该在心跳超时后回收那些“死”连接,但要小心,因为它也会断开任何忙碌时间过长的客户端。

更多关于心跳兔子MQCTL(参见其他部分)。

相关内容