在使用 ZeroMQ 的 majordomo 模式中,是否有往返消息时间的标准,如何测量或发现?



我不确定我的ZeroMQ Majordomo实现是否正确。我相信该指南建议此模式可以使用同步往返模式每秒处理数万条消息。我目前的解决方案似乎难以每秒发送一千多条消息。我的目标是尽可能接近每秒至少运行一万条消息。

我在单独的 Windows 2012 服务器上运行 Majrodomo 模式的所有组件,每台服务器都有 12 个处理器和 32 GB 的内存,因此我确信不会有资源限制。所有这些服务器也在同一网络中运行,这意味着它们不会穿越防火墙。由于其中包含的业务逻辑,我的代码运行速度较慢,因此对于我的速度测试,我回到了 ZeroMQ 指南中提供的简单测试代码。这些应该是指南中用于显示每秒消息的客户端。我也尝试了几种不同的语言,包括Delphi和C#,这两种语言似乎都无法达到承诺的速度。

可以在此处找到代码: http://zguide.zeromq.org/page:all

我想知道我是否对模式期望过高。当从 100 个客户端发送到单个代理,然后发送到 100 个工作线程并通过模式返回时,模式中的往返消息时间似乎约为 25 毫秒。这看起来很慢,从这些客户端发送 10000 条消息大约需要 4 秒,这与每秒数万条消息的承诺相去甚远。我是否对这种模式期望过高,还是我在这里缺少了什么。

顺便说一下,我看过关于 HWM(高水位线(被击中的帖子,但鉴于这是同步模式,我认为这可能是一个问题,因为我们只能排队相当于客户端计数的最大消息数。

...努力每秒发送超过一千条消息...目标是尽可能接近每秒至少运行一万条消息。

ZeroMQ生态系统超越了性能测试发布时的状态。

最好的第一步:

是明确发布被测系统的所有详细信息 - 又名SuT(对于每个主机,其硬件详细信息(最好通过hwloc类似的"指纹"(,O/S配置详细信息(prio,后台工作负载,虚拟机的成本(如果适用 - 即外部虚拟机管理程序实际从虚拟机的"内部"窃取了多少vCPU时钟(,接口 - O/S缓冲区设置, I/F无容量(工作负载背景(、ToS/VLAN或其他局域网互连性能修改细节、局域网互连L2交换硅理论性能上限和后台工作负载在SuT发作之前、期间和之后出现。

接下来是代码:

所有代码的完整副本 - 又名MCVE-(可检查和可重复(代码。鉴于到目前为止这里没有代码,没有人可以根据观察到~ 1k [msgs/s]的根本原因来判断您的实际观察

结果

接下来是测试中使用的"参考点"的定义:

应该在哪个定义/给定的"参考"点测量SuT以及[ms]中预期 TaT 的预期范围是多少。

我使用 ZeroMQ DLL-s 的时间相当长(从 2.11 开始 - 所以确实是相当长的时间(,我相信人们可以很容易地用入口流量使 AccessNode 过载,或者像前一种情况一样容易地窒息 ZeroMQ 基础设施,如果允许不正确的配置并且服务性能会下降,如果不是降级, 如果没有采取适当的措施来配置保留在服务关键路径上的所有资源。

没有确凿的事实(如前几步所声明的(,只剩下猜测或没有根据的意见。

最新更新