Как профилировать Java-приложение?
От: vsb Казахстан  
Дата: 03.07.23 05:54
Оценка:
Тратить тысячи денег на коммерческое не хочу, нет таких денег.

У меня серверное приложение, которое нужно в продакшне отпрофилировать в часы пик и понять, куда процессорное время уходит.

Скачал visualvm, подключился (это отдельный квест, ну да ладно), но он какой-то максимально убогий. Основная претензия — он считает cpu по статусу потока в JVM. При этом этот статус RUNNING даже когда поток спит в native коде (к примеру netty), да даже когда он спит в NioSelector-е из стандартной библиотеки. То бишь у меня потоки типа http-nio-8080-Poller нагружены на 100%. А если просуммировать, то там все 2000% будут, хотя по факту в top-е в этом время нагрузка нулевая. При этом как вручную пометить, что эта функция CPU не потребляет, я не увидел.

Каких-то других способов профилировать не нашёл. Все покупают/воруют yourkit?
Re: Как профилировать Java-приложение?
От: LaptevVV Россия  
Дата: 03.07.23 06:07
Оценка: 14 (1)
Вот это смотрел?
https://jug.ru/talks/meetups/the-art-of-the-java-profiling/
25 октября 2017-го в офисе компании SEMrush состоялась встреча с Андреем Паньгиным, инженером проекта Одноклассники, экспертом в области высоконагруженных серверов на Java. Тема встречи — профилирование Java-программ.

Профайлер — наш лучший друг в поиске узких мест производительности. Для Java существует множество подобных инструментов, но почему же до сих пор не утихают дискуссии о проблемах профилирования?

На реальных примерах из практики Андрей показал, что недостатки есть у всех инструментов: не спасают даже модные средства вроде perf и honest-profiler. Более того, порой performance-проблемы уходят вглубь JVM или даже ядра операционной системы, и тогда поиск причин становится настоящим испытанием.

Обсуждаются различные подходы к профилированию CPU, аллокаций памяти и блокировок. На примере async-profiler разбирается, как аппаратные и программные механизмы помогают в сборе метрик производительности. В завершение рассмотрено, как Одноклассники профилируют в продакшне весь стек от Java-кода до ядра Linux.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Как профилировать Java-приложение?
От: Alexbnd Израиль  
Дата: 10.07.23 08:00
Оценка:
Jprofiler стоит около 500 долларов
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Как профилировать Java-приложение?
От: vsb Казахстан  
Дата: 10.07.23 08:58
Оценка:
Здравствуйте, Alexbnd, Вы писали:

A>Jprofiler стоит около 500 долларов


Я в курсе. Это очень дорого. Мне нужно бесплатно.
Re[3]: Как профилировать Java-приложение?
От: Alexbnd Израиль  
Дата: 10.07.23 10:01
Оценка: -2
vsb>Я в курсе. Это очень дорого. Мне нужно бесплатно.

Для программиста, работающего на себя (иначе это расходы работодателя) 500 долларов это очень дорого?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Как профилировать Java-приложение?
От: dya-victor Россия  
Дата: 17.07.23 10:56
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Тратить тысячи денег на коммерческое не хочу, нет таких денег.


Можно собирать тред дампы по скрипту раз в N миллисекунд(kill -3 pid) и потом посмотреть где потоки висят.

Есть даже тул встроенный в https://github.com/devexperts/QD — он мержит стек трейсы и пишет в процентах куда что ушло. Если надо напишу инструкцию как воспользоваться — библиотека сама по себе другие цели выполняет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.