Искусство Java-профилирования

25 октября 2017-го в офисе компании SEMrush состоялась встреча с Андреем Паньгиным, инженером проекта Одноклассники, экспертом в области высоконагруженных серверов на Java. Тема встречи — профилирование Java-программ.

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

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

Обсуждаются различные подходы к профилированию CPU, аллокаций памяти и блокировок. На примере async-profiler разбирается, как аппаратные и программные механизмы помогают в сборе метрик производительности. В завершение рассмотрено, как Одноклассники профилируют в продакшне весь стек от Java-кода до ядра Linux.