我想使用python构建一个类似于[医]呼吸器/洗涤槽方案的应用程序
假设我们有10 Worker,它们都运行在同一个多核服务器上。
假设每2秒左右,每个工作者向Sink推送大小为5MB的消息。因此,Sink必须每2秒总共处理50MB。
如果10位Worker在不同的机器上,我知道网络可能是一个潜在的瓶颈。
如果10个Worker必须将他们的数据写入磁盘(I/O),我知道磁盘可能是一个潜在的瓶颈。
考虑到所有10 Worker都是上的相同的机器,那么应该期望哪些瓶颈呢?
例如,同一个10 Worker是否可以每2秒左右推送一条大小为10 so的消息?他们能每2秒推一条大小为20 or的消息吗?
zmq的局限性是什么?
在python和zeroMQ环境中使用Linux环境时,应该期望什么样的瓶颈类型?
发布于 2011-07-15 01:54:57
使用同一台服务器上的PUSH/PULL,我可以最大限度地写入raid数组@400 max /秒(以写入速度为瓶颈)。有10 are基准测试结果这里。我建议构建一些简单的基准,性能将取决于许多因素,如消息格式、大小等。
例如,一个完全微不足道的基准测试显示,zeromq能够在我的机器上发送100条10 my消息( 12.3毫秒):
# 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 loophttps://stackoverflow.com/questions/6701819
复制相似问题