RabbitMQ客户端性能

时间:2013-09-04 20:14:31

标签: python rabbitmq pika

人们试图用pika客户端解析日志文件到RabbitMQ:

import pika

credentials = pika.PlainCredentials('username', 'password')
parameters = pika.ConnectionParameters(credentials=credentials,host='ec2privateip',port=5672,virtual_host='/')
connection = pika.BlockingConnection(parameters) 
channel = connection.channel() 
channel.queue_declare(queue='blahqueue')

f = open(r'apicalls.log', 'r')

while True:
  line = f.readline()
  if not line:
    time.sleep(1)
  else:
    channel.basic_publish(exchange='',routing_key='hello',body=line)

为了表现,我看到1台ec2机器可以发送大约300条消息/秒。这不会从m1.small更改为m1.large。

为了获得更好的性能,我应该花时间在C中重写上述内容,还是应该在其他地方寻找?

在同一台RabbitMQ机器上本地运行的测试显示完全一样。

如果我在本地运行runjava.sh com.rabbitmq.examples.MulticastMain测试,我会看到10K /秒的性能。这让我相信Python客户端很慢,或者我没有正确测试设置。

1 个答案:

答案 0 :(得分:1)

你可能不会看到改进,在C中重写上面的文件系统,你的随机time.sleep是瓶颈。我在Amazon EC2上并不完全确定,但一般情况下,当您升级速度更快的机器时,您不一定会获得更快的文件系统IO。

发布速度和消费速度之间也存在差异。显然要确保它的发布速度是问题。