RabbitMQ中心跳的合理值是多少?

 每天还贷的飞鱼 发布于 2022-12-20 10:57

RabbitMQ允许您"心跳"连接,即客户端和服务器不时检查(使用空消息)对方仍然存在且可用.到现在为止还挺好.

不幸的是,我无法在文档中找到建议的地方,这是一个合理的价值.我知道你需要在几秒钟内指定心跳,但什么是真实世界的最佳练习值?

显然,它不应该太频繁(流量),但也不是太罕见(代理,......).有什么建议?

15秒好吗?30?60?...?

2 个回答
  • 这个答案如果对于RabbitMQ <3.5.5,对于较新的版本,请参阅@bmaupin的答案.

    这取决于您的应用需求.开箱即用,RabbitMQ为10分钟.如果您未能两次激活心跳(20分钟不活动),则会立即关闭连接而不发送任何connection.close方法或来自代理端的任何错误.

    使用心跳的情况是防火墙在长时间连接时关闭非活动状态,或者某些其他网络设置不允许您等待连接.

    事实上,来自RabbitMQ配置文档的听力不是必须的

    心跳

    表示服务器在connection.tune帧中发送的心跳延迟(以秒为单位)的值.如果设置为0,则禁用心跳.客户端可能不遵循服务器建议,有关详细信息,请参阅AMQP参考.禁用心跳可能会在具有大量连接的情况下提高性能,但可能会导致在存在关闭非活动连接的网络设备时连接中断.默认值:580

    注意,听觉间隔太短可能会导致显着的网络开销.请记住,当听力时间间隔连接上没有其他活动时,会发送听觉帧.

    2022-12-20 10:59 回答
  • RabbitMQ文档现在提供建议的心跳超时值,介于5到20秒之间:

    将心跳超时值设置得太低会导致误报(实际上并非如此,则认为对等不可用),这是由于瞬态网络拥塞,服务器流控制寿命短等引起的。选择超时值时应考虑到这一点。

    来自用户和客户端库维护者的几年有价值的反馈表明,小于5秒的值很可能会导致误报,而小于1秒的值很可能会导致误报。对于大多数环境,5到20秒范围内的值是最佳的。

    资料来源:https : //www.rabbitmq.com/heartbeats.html#false-positives

    另外,从RabbitMQ 3.5.5开始,默认的心跳超时值为60秒(https://www.rabbitmq.com/heartbeats.html#heartbeats-timeout)

    2022-12-20 11:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有