Тратить тысячи денег на коммерческое не хочу, нет таких денег.
У меня серверное приложение, которое нужно в продакшне отпрофилировать в часы пик и понять, куда процессорное время уходит.
Скачал visualvm, подключился (это отдельный квест, ну да ладно), но он какой-то максимально убогий. Основная претензия — он считает cpu по статусу потока в JVM. При этом этот статус RUNNING даже когда поток спит в native коде (к примеру netty), да даже когда он спит в NioSelector-е из стандартной библиотеки. То бишь у меня потоки типа http-nio-8080-Poller нагружены на 100%. А если просуммировать, то там все 2000% будут, хотя по факту в top-е в этом время нагрузка нулевая. При этом как вручную пометить, что эта функция CPU не потребляет, я не увидел.
Каких-то других способов профилировать не нашёл. Все покупают/воруют yourkit?
Вот это смотрел?
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.
Jprofiler стоит около 500 долларов
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
vsb>Я в курсе. Это очень дорого. Мне нужно бесплатно.
Для программиста, работающего на себя (иначе это расходы работодателя) 500 долларов это
очень дорого?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Здравствуйте, vsb, Вы писали:
vsb>Тратить тысячи денег на коммерческое не хочу, нет таких денег.
Можно собирать тред дампы по скрипту раз в N миллисекунд(kill -3 pid) и потом посмотреть где потоки висят.
Есть даже тул встроенный в
https://github.com/devexperts/QD — он мержит стек трейсы и пишет в процентах куда что ушло. Если надо напишу инструкцию как воспользоваться — библиотека сама по себе другие цели выполняет.