Является ли хорошей идеей включить jmx (лямбда-зонд) на рабочем сервере? - PullRequest
23 голосов
/ 24 ноября 2008

У нас наблюдается некоторое замедление работы нашего веб-приложения, развернутого на Tomcat 5.5.17, работающего на Sun VM 1.5.0_06-b05, и наша хостинговая компания не предоставляет достаточно данных для обнаружения проблемы.

Мы рассматриваем возможность установки лямбда-зонда на производственном сервере, но для этого требуется включить JMX (com.sun.management.jmxremote) для получения статистики памяти и процессора.

Влечет ли включение JMX серьезное снижение производительности?

Если мы включим JMX, открываем ли мы какой-нибудь недостаток безопасности? Нужно ли настраивать безопасную аутентификацию, если мы разрешаем только локальный доступ к JMX?

Кто-нибудь использует это (томкат + лямбда-зонд) без проблем на производстве?

UPDATE

Глядя на ответы, кажется, что включение JMX само по себе не приводит к значительным накладным расходам на виртуальную машину. Дополнительная работа может возникнуть, если приложение мониторинга, подключенное к виртуальной машине, будь то JConsole , лямбда-зонд или любое другое, опрашивает с чрезмерной преданностью.

Ответы [ 5 ]

17 голосов
/ 25 ноября 2008

Вы можете зачеркнуть недостатки безопасности с помощью безопасной аутентификации. Просто поддержание готовности сервиса JMX не влечет за собой значительных накладных расходов и в целом является хорошей идеей. Здесь есть эталон .

6 голосов
/ 11 декабря 2008

Издержки от JMX низкие, и вы можете исправить безопасность, используя SSL и аутентификацию. Установите -Dcom.sun.management.jmxremote.ssl = true и -Dcom.sun.management.jmxremote.authenticate = true

Смотрите здесь для здесь для получения дополнительной информации о настройке сертификатов и т. Д.

Перегрузка становится проблемой, когда вы начинаете обрабатывать код. Издержки могут быть значительными, и инструментарий может повлиять на поведение вашего приложения. Вы не увидите, что вы получите, так называемый эффект Гейзенберга .

Если вам нужны низкие накладные расходы, я бы использовал инструменты, поставляемые с JRockit . Они используют информацию, которую JVM постоянно собирает. JVM хранит статистику о том, какие методы работают чаще всего, чтобы решить, какие методы следует оптимизировать. JVM также отслеживает использование памяти / шаблоны, чтобы решить, какой gc-stategy выбрать. JRockit предоставляет данные такого рода инструментам JRockit без добавления накладных расходов на инструментарий, которые вы обычно получаете от отдельного агента JMVTI .

3 голосов
/ 24 ноября 2008

JMX - это просто сокет, который ожидает подключения и позволяет внешним процессам получать доступ к данным, которые все равно собираются. У штрафа обычно очень низкое (если, конечно, вы не забиваете JMX-сервер запросами).

JMX позволяет вам разобраться в вашей виртуальной машине Java. Есть команды для запуска GC и его выключения. Тем не менее, JMX предлагает режим безопасного соединения, который использует открытые ключи и аутентификацию. Пожалуйста, прочитайте документы для деталей.

2 голосов
/ 27 ноября 2008

Мы используем лямбда-зонд на производственных серверах, и мы не увидели значительных накладных расходов. Я могу рекомендовать датчик как надежный продукт, готовый к производству с использованием (Tomcats 5.5 и 6.0, JDK 5 и JDK 6).

0 голосов
/ 24 ноября 2008

это зависит от реализации JMX и от того, насколько дорогой материал вы хотите отслеживать. Теперь у меня есть хотя бы одно JMX-приложение, которое имеет относительно высокую нагрузку на память.

...