[rabbitmq-discuss] Scaling single queues

Michael Giagnocavo mgg at giagnocavo.net
Mon Jan 6 20:13:14 GMT 2014


>> The messages are under 300 bytes, and billing records, so we use 
>> persistence, durability, and transactions.
>How big are the transactions? Are you sure you need transactions? Have you tried without transactions, or increasing the transaction size?

We really want the assurance of transactions so we haven't tried without it. The size of the transaction is our "batch" size. I've tried with as low as 50, and as high as 500. No difference in overall throughput.

>What is the largest number of unacknowledged messages that you have at any time? Have you tried to raise that number?

Usually it's about 0. I set prefetch as high as 25,000 and it didn't seem to help. Almost all the time in the consumer is spent waiting for messages.

>Are you supplying any non-standard parameters to the Erlang VM? Can you show the output of "rabbitmqctl status" ?

Not that I know of. We considered HiPE, but heard so many bad things we figured it wasn't worth the potential data loss if things segfault at the wrong place.

Status at the bottom. The other thing I just thought of is that maybe the messages are being paged to disk when I've got tens of millions backlogged. I think I would have seen that in iotop, but it's a possibility. "Unfortunately", today our consumers have kept up and there's no backlog so I can't tell.

I'll run that perf test tonight when the machine is mostly idle. 

Thank you,
-Michael

connection_procs,4677680},
      {queue_procs,3531416},
      {plugins,1414832},
      {other_proc,17968600},
      {mnesia,109816},
      {mgmt_db,1530208},
      {msg_index,2770832},
      {other_ets,14576224},
      {binary,12647320},
      {code,19818213},
      {atom,1361121},
      {other_system,6527882}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,8381177856},
 {disk_free_limit,50000000},
 {disk_free,44984172544},
 {file_descriptors,
     [{total_limit,924},
      {total_used,41},
      {sockets_limit,829},
      {sockets_used,29}]},
 {processes,[{limit,1048576},{used,866}]},
 {run_queue,2},
 {uptime,184269}]
...done.


More information about the rabbitmq-discuss mailing list