RabbitMQ对EC2的性能期望是什么?希望在这里分享经验.
我想在aws EC2上做一些RabbitMQ的性能测试.我为RabbitMQ,Publisher和消费者/工作者运行了3个单独的EC2实例.
我的方案是Publisher将JSON字符串(大约165-200字节)推送到直接交换类型,持久设置为true,并将持久设置为true的绑定队列(即两者都处于持久模式).消费者/工人正在单独的盒子上运行 - 不断拉动消息.(在工作中向前移动这些消息应该在MongoDB中保留,并且Publisher将使用REST轻松替换为Restful服务)
为了简单起见,我使用多播示例代码模拟了这种情况.我将组播代码拆分为两个单独的java文件,即"Producer"和"Worker",以便在单独的框中运行每个文件.我使用"c1.mediam"EC2和Ubuntu服务器v11.4 32位运行生产者和消费者,使用"m1.large"和Ubuntu服务器v11.4 64位用于RabbitMQ.
我能够实现每秒3-5k消息的吞吐量,即将研究消息推送速率保持在5K.(这与http://www.rabbitmq.com/faq.html#performance-latency一致)
此外,当我将推送速率提高到每秒10-12k个消息时.消费者消费消息的能力下降到每秒1-2k消息,并产生积压(很多时候它也低于每秒800条消息).
在上述情况下,我有以下问题,并希望提高消费者吞吐量的想法/建议.(注意:我的场景中的所有消息都应该是类似的类型,没有机会将它们分组以设置路由,因此可能需要某种负载平衡器方法)
1)使用一个rabbitMQ服务器,一个交换和一个队列观察此性能.是否可以进一步配置,微调以使用持久模式将吞吐量即兴增加到5k以上.
2)我明白,聚类可能是另一种选择.但是,我需要根据传入的负载设置集群,我可能无法获得消息分组/标识来定义路由(因为消息应该只是日志描述).我是否可以为工人/消费者提供集群跟踪负载均衡选项?
3)我预计每秒处理几十万个请求.我希望分享一些经验和方法来实现这一目标.
在Ruby 187中,我从http://rubyinstaller.org/downloads下载了devkit, 并按照https://github.com/oneclick/rubyinstaller/wiki/Development-Kit的说明进行操作.我还通过跟踪冒烟测试确保了devkit的正确安装.
然后我尝试安装蓝布(v2.0.10).它失败了以下错误:
C:\test\typo>gem install bluecloth --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing bluecloth:
ERROR: Failed to build gem native extension.
c:/Ruby187/bin/ruby.exe extconf.rb
checking for srand()... yes
checking for random()... no
checking for rand()... yes
checking for bzero() in string.h,strings.h... no
checking for strcasecmp()... yes
checking for strncasecmp()... yes
checking for mkdio.h... yes
checking for ruby/encoding.h... no
creating extconf.h
creating Makefile
make
gcc -I. …Run Code Online (Sandbox Code Playgroud)