【问题标题】:RabbitMQ lager_error_logger_h dropped messagesRabbitMQ lager_error_logger_h 丢弃消息
【发布时间】:2018-04-01 02:25:50
【问题描述】:

请帮忙解决问题。 有: RabbitMQ - 3.7.2 二郎 - 20.1

  • 连接数:527
  • 频道:500
  • 交换次数:49
  • 队列:4437
  • 消费者:131
  • 发布速率 ~ 200/s
  • 确认速率 ~ 200/s

配置:

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

在日志中不断出现这样的消息:

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
11:42:17.000 [warning] <0.32.0> lager_error_logger_h dropped 101 messages in the last second that exceeded the limit of 100 messages/sec
11:42:18.000 [warning] <0.32.0> lager_error_logger_h dropped 177 messages in the last second that exceeded the limit of 100 messages/sec

如何正确摆脱它们?如何从日志中删除此消息?

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    RabbitMQ 团队会监控 the rabbitmq-users mailing list,并且有时只会在 * 上回答问题。


    该消息意味着 RabbitMQ 正在生成大量错误消息,并且正在删除它们以避免快速填充日志。如果“在最后一秒删除了 X 条消息”是您在日志中看到的唯一条消息,那么您需要确定要删除的消息是什么,才能找到问题的根源。您可以通过运行以下命令暂时提高该限制来做到这一点:

    rabbitmqctl eval '[lager:set_loghwm(H, 250) || H <- gen_event:which_handlers(lager_event)].'
    

    然后,您应该会看到大量消息,这些消息将揭示潜在问题。要恢复到以前的设置,请运行以下命令:

    rabbitmqctl eval '[lager:set_loghwm(H, 50) || H <- gen_event:which_handlers(lager_event)].'
    

    【讨论】:

    • 根据github.com/erlang-lager/lager/issues/496,记录器将所有条消息计入此限制,而不仅仅是错误消息(或高于最低日志级别的消息)。
    • 是的,这是一个很快就会解决的错误。我必须修复 erlang-lager 的 CI 构建。但是,我原来的答案仍然是正确的。
    • @LukeBakken 我无法通过rabbitmqctl eval '[lager:set_loghwm(H, 250) || H &lt;- gen_event:which_handlers(lager_event)].' 提高限制。通过docker exec rabbitmq rabbitmqctl eval 'application:get_env(lager, error_logger_hwm).' 获取{ok,50}