В одном из наших производственных пакетов Tomcat работают два веб-приложения. Одно наше, другое - приложение «черный ящик», которое наш поставщик предоставил, чтобы «помочь» с нашим приложением.
Мы, к сожалению, сталкиваемся с ограничениями памяти в нашем производственном блоке, и я работаю над добавлением ОЗУ и запуском Tomcat с большим объемом памяти, доступным для JVM. Однако прежде чем я это сделаю, я хотел бы посмотреть, какое из этих двух веб-приложений съедает всю оперативную память!
Есть ли опция во встроенном диспетчере Tomcat, которая показывает использование ОЗУ веб-приложением? Если нет, есть ли где-нибудь бесплатное решение, предлагающее такой уровень диагностической доступности?
В случае необходимости я готов написать для этого свое собственное легкое веб-приложение, и одно из них будет работать на машине, которая следит за двумя другими.
Спасибо,
IVR Мститель
Попробуйте использовать JMX. Включение этого должно быть таким же простым, как добавление следующей строки в ваш сценарий запуска:
JAVA_OPTS=$JAVA_OPTS:"-Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
Как видите, есть варианты шифрования и аутентификации, чтобы насытить вашего локального менеджера Paranoia.
Вы не упомянули, какую систему мониторинга используете; вам, вероятно, придется настроить это, чтобы также можно было разговаривать с JMX. Zabbix имеет Zapcat, Вот некоторые Инструкции OpenNMS, а вот Плагин Nagios.
Взгляните на Tcat Server от MuleSoft, он может предоставить вам массу информации о использование памяти. Вы можете использовать его с существующей установкой Tomcat.
К сожалению, я не думаю, что существует какой-либо способ разбить использование ОЗУ отдельным веб-приложением, даже используя JMX. Однако только для этого эксперимента вы можете попробовать запустить каждое веб-приложение в отдельном экземпляре Tomcat. Затем измерьте использование памяти каждой отдельной JVM.
Взгляните на lamdaprobe, это небольшое веб-приложение, которое может даже подключиться к JMX и дать вам много ценной информации: http://www.devx.com/Java/Article/35659/1954
помните, что доступ к этому приложению должен быть предоставлен только администраторам
Zenoss позволит вам наблюдать за сервером, на котором запущен tomcat, процессом tomcat, а также контролировать его через JMX. Документации достаточно, и ее исходный код открыт.
Вы можете разбить память внутри сервера по классам и ссылкам, но это немного технически. Просто сделайте дамп кучи в какой-то момент с помощью jmap, jconsole, jvisualvm или -XX: + HeapDumpOnOutOfMemoryError. Затем откройте его с помощью Eclipse MAT или JHat.
Затем, если вам нужен дополнительный мониторинг: http://javamelody.googlecode.com (графики памяти и разбивка по классам включены)