Hello,
I'm dealing with a weird problem with RabbitMQ 3.6.2.
While publishing messages with delivery_mode=1 (to a durable queue), RabbitMQ management panel shows around 2500 messages per second (which is fine for me), but unfortunately when I try to publish same messages with delivery_mode=2 to make them persistent, incoming message rate drops to 15-20 messages per second. (using Python 2.7 and pika library)
Each message consists of just an URL, so their sizes are small too... Also I'm publishing by using basic_publish().
I have a desktop grade Intel i7 server with 32GB memory and the disks are 7200RPM SATA disks. CPU load is very low, between 1.50-2.00 (for 8 cores), also producer is running on the same server, reading data from MongoDB, makes some sorting before sending them to RabbitMQ etc. but doesn't write anything to disk, just reads.. Also memory has free space more than 20GB and iotop shows around 80K/s "total disk write" and around 250K/s "actual disk write"
I just stopped the MongoDB and all other operations, wrote a simple loop which publishes numbers from 0 to 50000, and if durable=true for queue_declare(), results are the same. When i set durable=false with queue_declare() it's getting faster again. In addition to that, I used a crawler on same server and it's crawling more than 200 pages/sec and writing them to MongoDB without any performance problem. So it doesn't look like a hardware/disk problem. Everything else than RabbitMQ works fine with disk writes. When I try to run same simple loop against a RabbitMQ installation on a virtual machine with a SSD (with much lower CPU and memory), it works fine too.
My problem looks like the same as mentioned here: https://groups.google.com/forum/#!topic/rabbitmq-users/ue2inq0dXpU
I also shared the problem and details on Stackoverflow too: http://stackoverflow.com/questions/37380128/why-publishing-persistent-messages-with-rabbitmq-is-so-slow
Node stats on management panel shows the following data;
File descriptors: 55 / 1024 available
Socket descriptors: 1 / 829 available
Erlang processes: 248 / 1048576 available
Memory: 277MB / 12GB high watermark
Disk space: 2.2TB / 12GB low watermark
Also I/O statistics (I/O average time per operation) shows as following; Read: 3.0ms
Write: 0.13ms
Seek: 0.05 ms
Sync: 70ms
Also you can see the output of "iostat -x 2 5" at http://pastebin.com/a0ds7vKx
Thank you very much in advance...
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-user...@googlegroups.com.
To post to this group, send email to rabbitm...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hello again,I tried with a test script (which just publishes 500.000 messages in a for loop), if mandatory = false and confirm_delivery enabled, (and delivery_mode=2) it's still publishing around 20 messages/sec..If delivery_mode=2, mandatory=True and confirm_delivery disabled, it's much faster, around 15.000 messages/sec.If delivery_mode=2, mandatory=False and confirm_delivery disabled, it's much faster again, around 15.000 messages/sec.For all tries, durable=True for queue_declare()..So the main reason seems like confirm_delivery option itself. But as it's just providing basic ACK, what can be the reason for that slowness?Thank you very much again...Sezgin
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-user...@googlegroups.com.
To post to this group, send email to rabbitm...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.