[rabbitmq-discuss] RabbitMQ perfomance testing & troubles

Dmitriy Samovskiy dmitriy.samovskiy at cohesiveft.com
Wed Apr 9 16:56:04 BST 2008


Hi Alexey,

Alexey Slynko wrote:
> 
> Hi,
> 
> we have done some stress tests of rabbitmq. Our main goal was the ~10K
> messages per second and maximum cpu & ram usage. Two servers with equal
> configuration listed below were used for this task.
> 
What is your projected number of clients (producers and consumers combined)? In your tests 
below, it looks to me like you had 200, 1000 and 2000 clients - are these your expected 
levels? Each client is a socket. I think you might get higher throughput by reducing the 
number of clients.


> There is a system state after rabbitmq startup:
> 
> top - 22:41:58 up 3 days,  5:10,  3 users,  load average: 0.00, 0.00, 0.00
>    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 31089 rabbitmq  15   0 2499m  15m 1620 S    0  0.4   0:00.29 beam.smp


> 
> So, let's try to start 100 producer's and
> 100 consumer's. Each producer generate 10 msgs/sec (t
> 1000 msgs/sec at all)
May I suggest increasing the number of messages per second as an alternative test (instead 
of increasing the number of clients)?

> 
> $ java -jar RabbitmqFastMessagingProducerTest.jar 100 > client.log
> 
> System snapshot:
> 
> top - 22:50:39 up 3 days,  5:19,  3 users,  load average: 0.51, 0.11, 0.04
> 
>    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 
> 31089 rabbitmq  15   0 2520m  33m 1620 S  281  0.8   0:45.94 beam.smp
> 
>> $ java -jar RabbitmqFastMessagingProducerTest.jar 500 > client.log
> 
>   top - 23:22:10 up 3 days,  5:51,  3 users,  load average: 4.91, 2.89,  
>    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 
> 31566 rabbitmq  15   0 3062m 572m 1620 S  412 14.2  12:14.58 beam.smp


It also looks like you restarted the broker before you ran the last top above (changed 
PID). Is there a way to capture its memory footprint right after restart? The difference 
in virt mem is 500M, which is 20% of what the first top shows.


I think one of your your biggest bottlenecks in this case is the number of sockets that 
you ask your OS to juggle at the same time (I may be wrong however). Things you might want 
to try:
1. reduce the number of clients
2. reduce the number of sockets each broker has to open by setting up a RabbitMQ cluster


- Dmitriy






More information about the rabbitmq-discuss mailing list