Мониторинг памяти Использование размера кучи Java в приложении, содержащем слушатель RabbitMQ - PullRequest
0 голосов
/ 26 февраля 2019

Использование RabbitMQ и Spring AMQP У меня есть Java-приложение, содержащее несколько @RabbitListener с.Эти потребители слушают очередь и очень быстро обрабатывают сообщения.Мне интересно узнать поведение памяти этого приложения с течением времени (я предоставлю нагрузочный тест с помощью некоторого инструмента, такого как JMeter).

Мой вопрос касается подхода.Прежде всего, я не эксперт в модели памяти Java.В моем понимании я должен обратиться к используемой памяти кучи Java, чтобы увидеть, сколько памяти обрабатывает сообщения в моем приложении с течением времени.Это правильно?Существуют ли другие соответствующие показатели?

Во-вторых, из-за сборщика мусора в Java будет некоторая задержка, прежде чем сборщик мусора включится и выполнит свою работу, освободив память и обновив использованную кучу памяти.Если я запускаю короткий тест, такой как тест продолжительностью менее минуты, у меня есть гарантии, что сборщик мусора будет срабатывать достаточно часто, чтобы я мог видеть результат изменения размера памяти (я не хочу видеть постоянную памятьсо временем)?

1 Ответ

0 голосов
/ 26 февраля 2019

Размер кучи и скорость выделения определяют, как / когда GC будет работать.Начните с небольшого размера кучи около 256 МБ.Просто запустите тест по крайней мере на 15 минут, потому что есть разные типы фаз сборки мусора.

https://blog.codecentric.de/en/2014/01/useful-jvm-flags-part-8-gc-logging/

Вы захотите включить журнал GC и загрузить его вhttps://gceasy.io/ для анализа.

Можно многое сделать, чтобы настроить поведение ГХ для достижения желаемых характеристик производительности.https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/

...