分享

RabbitMQ Performance Test

 昵称20874412 2015-03-03

测试环境:
单机部署RabbitMQ
CentOS6.4操作系统,4核CPU,8G内存
测试中,Exchange、channel均声明为持久化。
测试脚本已上传github:https://github.com/MrKiven/rabbitmq-performance-test

测试结果

一个生产者一个消费者,消息持久化,开启消费者ACK。横轴为时间(单位:秒),纵轴为QPS
RabbitMQ Performance Test

一个生产者两个消费者,消息持久化,消费者开启ACK。
RabbitMQ Performance Test

一个生产者三个消费者,消息持久化,消费者开启ACK。
RabbitMQ Performance Test

两个生产者一个消费者,消息持久化,消费者开启ACK。
RabbitMQ Performance Test

两个生产者两个消费者,消息持久化,消费者开启ACK。
RabbitMQ Performance Test

两个生产者三个消费者,消息持久化,消费者开启ACK。
RabbitMQ Performance Test

一个生产者一个消费者,消息不持久化,消费者开启ACK。
RabbitMQ Performance Test

一个生产者一个消费者,消息持久化,消费者不开启ACK。
RabbitMQ Performance Test

一个生产者一个消费者,消息不持久化,消费者不开启ACK。
RabbitMQ Performance Test

服务器资源占用情况

服务器CPU使用情况
RabbitMQ Performance Test

磁盘读写情况
RabbitMQ Performance Test

Free memory情况
RabbitMQ Performance Test

网络I/O情况
RabbitMQ Performance Test

测试结论

  • 1、 消费者线程数为两个时接收速度最快(此处建议一般的业务逻辑设置两个消费者线程),如果处理比较复杂的逻辑或数据,建议多开启消费者线程数
  • 2、 生产者线程数为二到三个时,发送速度最快,超过这个数后也不能提高发送速度
  • 3、 因生产者发送的速度比消费者块,因此建议可增加消费者线程数提高效率,个人建议为:消费者=生产者*1.5
  • 4、 消息大小对发/收速度影响较大,开启ACK和持久化后1K以上的消息单对单QPS不大与3000
  • 5、 ACK和持久化会大幅降低QPS
  • 6、 服务器可靠性:大量消息收发测试下(百万级别以上),无消息丢失情况发生
  • 7、 生产者和消费者刚开始工作时速度最快,且速度不稳定,工作一段时间后速度趋近与平稳
  • 8、 整个测试过程中服务器系统资源占用稳定,目前暂无服务器瓶颈
  • 9、 对于较大的数据(0.5K以上的),不建议使用一个消费者线程接收(速度比较慢),目前测试下来的结果来看,任何消息,设置两个生产者和三个消费者时性能最佳。
  • 10、开发者可根据上述测试结果结合实际业务来优化使用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多