ZeroMQ正在丢弃消息



我使用ZeroMQ在多个服务之间进行通信。我遇到了一个问题,我在发送回复,但他们从来没有收到来电。我做了很多调试,却搞不清发生了什么。我最终减小了消息大小(返回查询结果(,消息开始进入。然后我增加了JVM的内存大小,原始消息开始返回。

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

我使用的是ZeroMQ的Java版本。

Q"。。。如何正确调试">

如果知道本机ZeroMQ API设置;"机械";以及一对{ SNDHWM | RCVHWM }-硬截止极限,可以进行一些微调这些参数的试验误差测试。

Q"ZeroMQ是否输出任何日志或内存转储">

好吧,不,本机ZeroMQ在知情的情况下从未尝试过这样做。ZeroMQ概念的关键优先级是几乎线性可扩展的性能和Zen of Zero反射,它排除了任何单个操作,不支持在最小的低延迟包线下实现这一点。

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

我在ZeroMQ的11年多从未让我陷入无法解决的困境。最好对Context()-实例和Socket()-实例参数进行必要的深入了解,这将更好地配置L3、协议依赖性和O/S相关的缓冲属性(其中一些不需要出现在java-bindings中,但原生API最好地显示了ZeroMQ数据泵送引擎的所有可能和可调整的参数(。

最新更新