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

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

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

— Tomcat 7.0.37

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


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

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


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

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

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

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


Подскажите, что лучше всего может подойти? Что использовали в такой ситуации?
  • Вопрос задан
  • 4615 просмотров
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы