Skip to main content

rabbitmq心跳问题和php

· One min read

为什么我们需要心跳

tcp 靠的是什么保证链接?

序列号和重传,这是传输层的事情,但是对于应用层来说,是感知不到对端断开的,所以需要应用层的心跳.

php的心跳有什么问题?

php大部分都是单进程模型,所以没有一个额外的线程去定时给这个tcp链接发一个心跳包,导致一旦运行比较长的时间(心跳时间*2),对端的rabbitmq会断开连接

所以大部分场景我们需要保证我们的运行时间小于心跳时间 , 不然会有pipe broken的问题,其实这个问题一般是超过心跳时间,导致rabbitmq 手动断开tcp连接了