Я использую библиотеку perftest для загрузки одного экземпляра rabbitMQ в системе с 4 ядрами и 8 ГБ.Я создал несколько тестовых примеров для запуска и мониторинга задержки.
Я успешно протестировал с 1 производителем 4000 потребителей.но когда я попытался увеличить количество производителей до 250, тестовый случай прерывается со следующей ошибкой
[perf-test-producer-99] DEBUG com.rabbitmq.perf.Producer - Error in
publisher
java.lang.RuntimeException: java.lang.InterruptedException: sleep
interrupted
at com.rabbitmq.perf.AgentBase.delay(AgentBase.java:52)
at com.rabbitmq.perf.Producer.run(Producer.java:283)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.rabbitmq.perf.AgentBase.delay(AgentBase.java:50)
, это тестовая спецификация, которую я пытаюсь запустить, меняя только производителей и потребителей
[{'name': 'consume',
'type': 'simple',
'uri': 'amqp://myrabbit:5672',
'params': [{'time-limit': 60,
'min-msg-size':512,
'producer-msg-count': 130,
'consumer-msg-count': 50,
'producer-rate-limit':2,
'consumer-rate-limit':2,
'producer-count': 250,
'consumer-count':250}]
}
]
И я проверил top
, и кажется, что он использует около 86%
ОЗУ и около 380%
ЦП в системе, где размещается rabbitMQ.Это может быть причиной, но я не понимаю, как будут работать мои 4000 потребителей, а не 250 производителей?Задержка также резко возрастает, когда я увеличиваю количество производителей даже на 1 (с 1 - 2 оно увеличивается с 5 миллисекунд до 7 секунд при том же количестве потребителей)
Также я вижу, что множество очередей находятся в состоянии blocking
Пользовательский интерфейс управления rabbitmq
Есть предложения?