Задать вопрос

Java-профайлер с минимальным влиянием на производительность, для PROD-среды?

Столкнулся с проблемой низкой производительности Java-приложения. Дано:

— VPS с FreeBSD 9, 3 Гб RAM и несильным процессором

— Tomcat 7.0.37

— Несколько модулей приложения в виде набора WAR, один из них — веб-приложение


Load Average держится в районе 2-3 (1 процессор), загрузка процессора в среднем — около 50%.

В приложении идет постоянный процессинг, хочется понять, какое место является главным потребителем процессорного времени.


От профайлера нужно, чтобы он:

— по минимуму влиял на систему, это продакшен

— раз в заданный промежуток времени снимал данные с системы и сохранял их в файл, для дальнейшего анализа

— нормальный визуальный инструмент анализа снепшота


Подскажите, что лучше всего может подойти? Что использовали в такой ситуации?
  • Вопрос задан
  • 4618 просмотров
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@dvayanu
moskito.anotheria.net
Берёте, интегрируете. Получаете много удовольствия!
Вот кусочек демо:
server04.test.anotheria.net:8080/moskitodemo/mui/

Если нужна помощь пишите в личку!
Ответ написан
@dvayanu
1) К приложению. Хотя записываетья информация JVM тоже. Например все JMX Beans.

2) Да. Смотрите например:
confluence.opensource.anotheria.net/display/MSK/MoSKito+Central
В вашем случае наверное даже скорее:
confluence.opensource.anotheria.net/display/MSK/HowTo+Run+moskito-central+in+embedded+mode

3) Сложнее :-)
Либо смотрите прямо на сервере, там есть не только снэпшоты но и история.

confluence.opensource.anotheria.net/display/MSK/Accumulators
confluence.opensource.anotheria.net/display/MSK/Thresholds

Либо смотрите какой-то третьей тулзой, на основе xml, json, csv, sql или каких-то ещё файлов/баз и.т.д.
Интегрированая тулза для исторических данных пока в разработке.
Ответ написан
@dvayanu
Наверное я не до конца всё же понял Ваши Requirements. На порталах www.parship.de и www.allyouneed.com решали похожие проблемы так.
Тем не менее удачи ;-)
Кстати может Вам стоит сделать систематические thread dumps и сравнивать их потом?
То есть смотреть не «какая компонента жрет время и где» (москито) а «какой thread постоянно Runnable причем на том же месте». Эдакой infinite или very long loop.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы