【问题标题】:ZeroMQ is dropping messagesZeroMQ 正在丢弃消息
【发布时间】:2020-10-13 15:27:49
【问题描述】:

我正在使用 ZeroMQ 在多个服务之间进行通信。我遇到了一个问题,我正在发送回复,但他们从未联系到呼叫者。我做了很多调试,无法弄清楚发生了什么。我最终减小了消息大小(我正在返回查询结果)并且消息开始进入。然后我增加了我的 JVM 的内存大小并且原始消息开始返回。

这让我相信消息太大而无法放入内存,ZeroMQ 只是将它们丢弃。我的问题是,我怎样才能正确调试这个? ZeroMQ 是否输出任何日志或内存转储?

我正在使用 Java 版本的 ZeroMQ。

【问题讨论】:

    标签: zeromq distributed-computing low-latency jzmq


    【解决方案1】:

    Q“...我怎样才能正确调试这个?”

    好吧,如果有人知道原生 ZeroMQ API 设置,至少知道缓冲“机制”和一对{ SNDHWM | RCVHWM }-hard-cut-off 限制,那么可能会进行一些试错测试以确保正常- 调整这些参数。

    Q“ZeroMQ 是否输出任何日志或内存转储?”

    嗯,不,本机 ZeroMQ 故意从未尝试过这样做。 ZeroMQ 概念的关键优先级是几乎线性可扩展的性能和 Zen-of-Zero 反射,它排除了任何单个操作,不支持在极简的低延迟信封上实现这一目标。

    然而,较新版本的原生 API 提供了一个名为 socket-monitor 的工具。如果需要,这可能会帮助您编写自己的内部套接字事件分析器。

    我在 ZeroMQ 的 11 年多来从未让我陷入无法解决的困境。最好了解Context()-instance 和Socket()-instance 参数,这将更好地配置L3、协议相关和O/S 相关的缓冲属性(其中一些不需要存在于java-绑定,但本机 API 以最佳状态显示了 ZeroMQ 数据泵引擎的所有可能和可调整的参数)。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      相关资源
      最近更新 更多