蟒蛇& zeroMQ - 处理大尺寸消息的能力?

时间:2011-07-15 01:29:40

标签: python zeromq

我想使用python构建一个类似于zeroMQ's ventilator / sink scheme的应用

假设我们有 10名工作人员,所有人都在同一个多核服务器上运行。

假设每个 2 [sec] 左右,每个工作人员都会向接收器推送一个大小为5 [MB]的消息。因此,接收器必须每 2 [sec] 左右处理总共50 [MB](= 10 x 5 [MB])。

如果10名工作人员在不同的计算机上,我知道网络可能是潜在的瓶颈。

如果10 Workers 必须将他们的数据写入磁盘(I / O),我知道 磁盘可能是潜在的瓶颈。

鉴于所有 10名工人

例如,相同的 10名工作人员每个 2 [sec] 的每个人都可以推送大小为10 [MB]的邮件吗? 他们可以每隔 2 [sec] 推送大小为20 [MB]的消息吗?

zmq的限制是什么?

python环境中使用zeroMQLinux时应该会遇到哪些类型的瓶颈?

1 个答案:

答案 0 :(得分:2)

在同一台服务器上使用PUSH / PULL我已经能够最大限度地写入raid阵列@ 400MB / sec(写入速度瓶颈)。有10GbE基准测试结果here。我建议构建一些简单的基准测试,性能将取决于许多因素,如消息格式,大小等。

例如,一个完全无关紧要的基准测试显示zeromq能够在我的机器上以12.3毫秒的速度发送100个10mb消息:

# server
import zmq

context = zmq.Context()
reciever = context.socket(zmq.PULL)
reciever.bind('tcp://127.0.0.1:5555')

while True:
    reciever.recv()

# client
import os, zmq

context = zmq.Context()
pusher = context.socket(zmq.PUSH)
pusher.connect('tcp://127.0.0.1:5555')

message = ' ' * 10485760

>>> %timeit pusher.send(message)
100 loops, best of 3: 12.3 ms per loop