- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我按以下方式使用此处找到的主管代码 ( https://github.com/zeromq/majordomo ):
我没有使用单个代理来处理请求和回复,而是启动两个代理,这样其中一个处理所有请求,另一个处理所有回复。
我做了一些测试,看看主管经纪人可以处理多少个连接:
num of reqs per client num of requests handled without pkt loss
1 614 (614 clients)
10 6000 (600 clients)
100 35500 (355 clients)
1000 300000 (300 clients)
5000 750000
10000 600000
15000 450000
20000 420000
25000 375000
30000 360000
我无法正确理解结果。
当每个客户端仅发送一个请求时,为什么代理只能处理 614 个客户端?
我在一台机器上运行了这个测试,但 614 看起来仍然很低。
有人可以告诉我可能出了什么问题吗?
<小时/>所以我将HWM设置如下:
Broker’s HWM on send/receive is set to 40 k.
TCP send/receive buffer is set to 10 MB.
Worker’s HWM on send/receive is set to 100 k.
Client’s HWM on send is set to 100,
and on receive is set to 100 k.
All the clients run on the same machine.
All the workers (10 workers running the echo service),
and the two broker instances run on a single ec2 instance.
Client program simply sends all the requests in a blast (all at once).
我对发送时的HWM的理解是,当达到HWM时,套接字将阻塞。这就是为什么我将客户端的发送 HWM 设置为 100 条消息,希望这能给我某种流量控制。
现在,当我有 10 个客户端发送 10,000 个请求(全部一次性)时,我会看到数据包丢失。并且,当客户端每个发送10000个请求,但一次只发送前1000个请求时,128个客户端并行运行时就会出现丢包。
当我将代理的 HWM 设置为 40k 时,为什么当爆炸大小小于 40,000 时它会丢弃数据包(就像我上面使用的那样)?我知道 zmq 指南说管道的分配容量将是我们设置的容量的 60% 左右,但 10,000 只是我设置的容量 (40,000) 的 25%。同样的道理,1000也只是10%。所以我不明白是什么原因导致代理丢失数据包。 HWM 应该是针对每个对等连接的,不是吗?请帮助我理解这种行为。
最佳答案
TLDR
让我引用一个奇妙而珍贵的来源——Pieter HINTJENS 的书
"Code Connected, Volume 1"
(绝对值得任何人花时间逐步浏览 PDF 副本......关键信息都在 Pieter 精心制作的 300 多个激动人心的页面中的文本和故事中)
<小时/>高水位线
当您可以在进程之间快速发送消息时,您很快就会发现内存是一种宝贵的资源,并且可以轻松填满。流程中某处的几秒钟延迟可能会导致积压,从而导致服务器崩溃,除非您了解问题并采取预防措施。
...
ØMQ使用 HWM
的概念(高水位线)来定义其内部管道的容量。每个从套接字发出或进入套接字的连接都有自己的管道,并且 HWM
用于发送和/或接收,具体取决于套接字类型。某些套接字( PUB
、 PUSH
)仅具有发送缓冲区。某些( SUB
、 PULL
、 REQ
、 REP
)仅具有接收缓冲区。有些( DEALER
、 ROUTER
、 PAIR
)同时具有发送和接收缓冲区。
在 ØMQ v2.x 中, HWM
默认情况下是无限的。这很简单,但对于大批量发布商来说通常是致命的。在 ØMQ v3.x 中,默认设置为 1,000,这是更明智的。如果您仍在使用 ØMQ v2.x,则应始终设置 HWM
在您的套接字上,可以是 1,000 以匹配 ØMQ v3.x,也可以是考虑到您的消息大小和预期订阅者性能的其他数字。
当您的套接字达到 HWM
时,它会根据套接字类型阻止或删除数据。 <强> PUB
和 ROUTER
套接字如果到达 HWM
,将丢弃数据,而其他套接字类型将会阻塞。过inproc
传输中,发送方和接收方共享相同的缓冲区,因此真正的HWM
是 HWM
的总和双方设定。
最后,HWM
-s 不准确;虽然默认情况下您可能会收到最多 1,000 条消息,但由于 libzmq
的方式,实际缓冲区大小可能要低得多(只有一半)。 实现其队列。
尝试调整您的 RCVHWM
/ SNDHWM
和其他低级 IO 线程/API 参数,以便您的测试设置保持内存占用可行、稳定且性能良好,符合您的IO-资源-不可压缩-数据-“液压”
关于zeromq - Majordomo 经纪人 : handling large number of connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120776/
我需要有关使用并发的 Java 作业的帮助。我遇到的问题是在 get 方法上,我找不到任何问题。然而,感觉它没有被正确访问,或者它没有做它应该做的事情。总而言之,问题是我得到了所有金属,但我没有给消费
有人可以为我定义提供者、服务和代理之间的概念区别吗? 我经常编写 MVC 应用程序并将大部分业务逻辑卸载到其他类。没什么特别的,只需传入参数并接收回 POCO 实例。 为那些为我的 Controlle
我有以下结构: zookeeper: 3.4.12 kafka: kafka_2.11-1.1.0 server1: zookeeper + kafka server2: zookeeper + ka
我收到 Message size too large异常(exception),当我尝试发送超过 1 Mb 大小的消息时。当我尝试生成消息时,错误出现在我的客户端应用程序中。经过一番谷歌搜索后,我发现
我按以下方式使用此处找到的主管代码 ( https://github.com/zeromq/majordomo ): 我没有使用单个代理来处理请求和回复,而是启动两个代理,这样其中一个处理所有请求,另
我是一名优秀的程序员,十分优秀!