
async‑profiler в production: CPU, аллокации, lock contention и чтение flame graph
badcasedaily1 46 минут назад async‑profiler в production: CPU, аллокации, lock contention и чтение flame graph Средний 10 мин 2K Блог компании OTUS Java * Программирование * Туториал Стандартный набор инструментов для...
Значимый прорыв формирует отрасль ИИ: badcasedaily1 46 минут назад async‑profiler в production: CPU, аллокации, lock contention и чтение flame graph Средний 10 мин 2K Блог компании OTUS Java * Программирование * Туториал Стандартный набор инструментов для профилирования Java‑приложений из коробки JDK — JFR (Java Flight Recorder), jstack, jmap, VisualVM — закрывает многие задачи, но в реальных же сценариях у каждого есть ограничения. JFR хорош для общего обзора, но плохо показывает горячие методы из‑за безопасных точек (safepoint bias) — sampling срабатывает только на safepoint, и методы, инлайненные JIT или без safepoint‑poll, в выборку не попадают. jstack даёт срез стека на момент вызова, но один срез — это случайность, а серия с шагом 100 мс уже неудобно анализировать руками.
VisualVM требует JMX‑подключения, что в проде с сетевой политикой или Kubernetes‑подами часто блокировано. async‑profiler — внешний инструмент, который в целом решает эту проблему. К маю 2026 актуальная версия — async‑profiler 4.
Технические детали
3, команда перешла на квартальный цикл релизов. С январских обновлений 2026 года инструмент идёт в комплекте Amazon Corretto, отдельно скачивать не нужно. В статье обзор основных режимов профилирования, как использовать, как читать flame graph и где async‑profiler помогает, а где лучше взять другой инструмент.
Установка и базовые командыСкачать архив:wget tar xzf async-profiler-4. gz cd async-profiler-4. 3-linux-x64Бинарник называется asprof (в версиях до 3.
На Amazon Corretto бинарник доступен в стандартной поставке JDK. Поддерживаются Linux и macOS, JDK 8 и новее, на Linux одинаковые бинарники работают и с glibc, и с musl. Системные требования.
Отраслевые последствия
На Linux нужны два sysctl‑параметра, иначе async‑profiler не сможет собирать стеки:sudo sysctl kernel. perf_event_paranoid=1 sudo sysctl kernel. kptr_restrict=0Без них вы получите ошибку perf_event_open failed: Permission denied или нулевые сэмплы.
В Docker‑контейнерах это иногда требует --cap-add SYS_ADMIN или запуска с --privileged. В Kubernetes — добавления capabilities в SecurityContext пода, что обычно требует согласования с инфраструктурной командой. Базовая команда — запустить профилирование на 60 секунд и сохранить flame graph:asprof -d 60 -f flamegraph.
html PID Java‑процесса можно посмотреть через jps -l (там видны процессы и main‑классы). Результат — самодостаточный HTML‑файл, который можно открыть в браузере. Внутри — интерактивный SVG, в котором можно кликать по блокам и спускаться в детали, или искать по тексту метода.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





