资源警报后RabbitMQ服务器上的额外TCP连接
我已经在Windows上安装了RabbitMQ Server 3.6.0(我知道该升级了,我已经在另一个服务器节点上完成了) 在服务器端和客户端都启用心跳(心跳间隔60秒) 我有一个资源警报(RAM限制),之后我观察到到到到RMQ服务器的TCP连接数量增加 目前有18000个连接,而正常连接数量为6000个 通过管理插件,我可以看到有很多连接有0个通道,而我们的“正常”连接至少有1个通道 即使RMQ服务器重启也不会有帮助:所有连接都会重新建立 一,。这是否意味着他们都还活着 这里描述了类似的问题,但正如我所看到的,它在v3.6.0中被完全修复了 二,。我是否理解在RMQ Server v3.6.0之前,资源警报后的行为是这样的:每1个真实的客户端自动恢复连接,服务器端可能会挂起几个TCP连接 可能很重要:我们在服务器和客户端之间有haProxy资源警报后RabbitMQ服务器上的额外TCP连接,rabbitmq,haproxy,Rabbitmq,Haproxy,我已经在Windows上安装了RabbitMQ Server 3.6.0(我知道该升级了,我已经在另一个服务器节点上完成了) 在服务器端和客户端都启用心跳(心跳间隔60秒) 我有一个资源警报(RAM限制),之后我观察到到到到RMQ服务器的TCP连接数量增加 目前有18000个连接,而正常连接数量为6000个 通过管理插件,我可以看到有很多连接有0个通道,而我们的“正常”连接至少有1个通道 即使RMQ服务器重启也不会有帮助:所有连接都会重新建立 一,。这是否意味着他们都还活着 这里描述了类似的问题
三,。haProxy可以解释这种额外的连接吗?可能它会阻止客户端接收到由于资源警报而关闭连接的信号?RabbitMQ团队监视并有时只回答有关StackOverflow的问题
我建议该用户从Erlang 18升级,Erlang 18已知TCP连接问题-
那要看情况。理论上,haProxy as只是一个传递。为了让代理识别连接,必须通过握手,这是一个深思熟虑的过程,不能无意中发生。关闭连接还需要握手,这可能是haProxy的罪魁祸首。如果haProxy认为连接已断开,并在没有该过程的情况下将其断开,那么这可能是一个促成原因。但是它本身并没有建立这些新的连接。我已经设法重现了这个问题:最终它是我们的客户使用RMQ连接的方式中的一个缺陷。 它创建了一个自动恢复连接(这很好)并且有时它创建了一个单独的简单连接用于“临时”目的 重现我的问题的步骤是:
另外,我们当然会升级Erlang。听起来您的客户端有僵尸连接,可能是因为资源管理不善。1.您使用的RabbitMQ客户端是什么?二,。如果手动终止一个客户端进程,会发生什么情况?你看到一个连接消失了还是几个连接消失了?我想你可以把haProxy排除在外,因为它只是一个通行证。要让代理识别连接,必须通过握手,这是一个深思熟虑的过程,不能无意中发生。>实际上,每个逻辑进程只应创建一个连接。这是问题之一。我们的客户端应用程序不保证这一点。>理论上,haProxy as只是一个传递。你是对的:最终,哈普洛西在我的案件中是无辜的。