Назад | Перейти на главную страницу

Мониторинг памяти Java-приложений внутри Cloud Foundry

У меня есть приложение Java, которое я развертываю в среде Cloud Foundry. Я хочу отслеживать использование памяти приложением. Cloud Foundry предоставляет cf app команда, которая производит вывод о каждом экземпляре указанного приложения. Здесь вы можете увидеть информацию о конкретном приложении с двумя запущенными экземплярами (удаленными):

$ cf app myapp
Showing health and status for app myapp in org myorg / space myspace as admin...
OK

requested state: started
instances: 2/2
usage: 1G x 2 instances
urls: myapp.example.com
last uploaded: Wed Jan 27 09:00:53 UTC 2016
stack: mylinuxstack
buildpack: myjavabuildpack

     state     since                    cpu    memory         disk      details
#0   running   2016-01-27 09:01:31 AM   0.4%   689.8M of 1G   0 of 1G
#1   running   2016-02-03 05:35:03 PM   0.0%   624.2M of 1G   0 of 1G

Однако показатели памяти, по-видимому, просто отражают объем памяти, используемый процессами, запущенными внутри контейнера Cloud Foundry. Если вы имели дело с мониторингом приложений Java, вы знаете, что JVM в конечном итоге потенциально будут потреблять столько памяти, сколько вы им сказали, даже если приложение Java не использует ее. (Другими словами, он сам управляет памятью.) Это означает, что фактический java процесс может использовать свой полный 1 ГБ памяти, но это не означает, что ему скоро не хватит памяти.

По моему опыту, полезный мониторинг использования памяти приложения Java зависит от получения данных от самой JVM через что-то вроде JMX (например, через jconsole). Однако Cloud Foundry, похоже, не предоставляет информацию о том, где на самом деле работает приложение. (Фактически, я нашел некоторых людей, утверждающих, что Cloud Foundry явно не сообщит вам эту информацию.) А это означает, что мне некуда подключить JMX-клиент.

Если я хочу отслеживать использование памяти своими приложениями Java в Cloud Foundry, как мне это делать? Не стесняйтесь опровергать любое из моих утверждений, если вам виднее.

Мне удалось найти прямые подключения к экземплярам, ​​запросив Cloud Foundry (Go) Маршрутизатор /routes URL.