You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解决RabbitMQ中lager_error_logger_h丢弃日志消息问题

解决RabbitMQ日志持续出现lager_error_logger_h限流警告的问题

问题场景

我在运维RabbitMQ 3.7.2(搭配Erlang 20.1)时,日志里一直重复刷出如下警告信息,想请大家帮忙解决:

11:42:16.000 [warning] <0.32.0> lager_error_logger_h dropped 105 messages in the last second that exceeded the limit of 100 messages/sec

先同步下当前的环境和配置细节:

环境信息

  • RabbitMQ版本:3.7.2
  • Erlang版本:20.1
  • 连接数:527
  • 信道数:500
  • 交换器数:49
  • 队列数:4437
  • 消费者数:131
  • 消息发布速率:~200条/秒
  • 消息确认速率:~200条/秒

当前配置项

  • disk_free_limit.absolute = 5GB
  • log.default.level = warning
  • log.file.level = warning

解决方案

这个警告是RabbitMQ底层依赖的日志框架lager触发的限流机制——默认情况下它对error_logger的消息处理有100条/秒的上限,当系统日志生成速度超过这个阈值,就会触发该警告。给你几个实用的解决方向:

  1. 直接调高lager的消息限流阈值
    你可以修改RabbitMQ的配置文件(比如advanced.config),添加lager的配置项来提高这个限制,比如调到500条/秒:

    [{lager, [
        {error_logger_hwm, 500}
    ]}].
    

    修改完成后重启RabbitMQ即可生效,这个方法能快速解决警告刷屏的问题,适合确认日志量确实合理的场景。

  2. 排查日志过载的根源
    虽然你已经把日志级别设为warning,但系统可能仍在大量生成warning级别的日志。建议临时把日志级别调低到info(短时间内可以开debug,注意不要长期开启,会影响性能),查看具体是哪些内容在刷日志——比如是否有队列异常、连接频繁断开重连、业务逻辑触发的重复警告等。找到根源后针对性修复,从源头减少日志量,比单纯调高阈值更稳妥。

  3. 检查版本兼容性(兜底方案)
    你当前的RabbitMQ和Erlang版本是官方支持的组合,但部分Erlang小版本可能在日志处理上存在细节问题。如果前两个方法无效,可以尝试升级Erlang到20.x分支的最新版本(比如20.3),或者升级RabbitMQ到3.7.x的后续小版本,看看是否能解决日志框架的潜在问题。


内容的提问来源于stack exchange,提问作者Alexander Sokolov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:49:30