async‑profiler в production: CPU, аллокации, lock contention и чтение flame graph

Профилирование Java‑приложений в production часто упирается не в отсутствие инструментов, а в их ограничения: CPU горит в одном месте, latency копится в другом, аллокации давят на GC, а lock contention вообще не виден в обычном CPU‑профиле. В статье разбираем, как использовать async‑profiler для диагностики реальных Java‑сервисов: снимать CPU, allocation, wall‑clock и lock‑профили, читать flame graph и понимать, где именно приложение тратит ресурсы.

https://habr.com/ru/companies/otus/articles/1039968/

#asyncprofiler #Java #JVM #профилирование #flame_graph #производительность #аллокации #многопоточность #lock_contention #latency

async‑profiler в production: CPU, аллокации, lock contention и чтение flame graph

Стандартный набор инструментов для профилирования Java ‑приложений из коробки JDK — JFR (Java Flight Recorder), jstack, jmap, VisualVM — закрывает многие задачи,...

Хабр

Java нас обманывает: скрытая цена чистого кода

Все сейчас пишут красивый, современный код: стримы, record DTO, функциональные цепочки. Применяют лучшие практики и никаких мутабельных аккумуляторов и ручных циклов. А потом код начинает виснуть. И ведь локально все хорошо, и памяти достаточно, но под нагрузкой GC внезапно начинает просыпаться каждые 200 миллисекунд, хотя куча заполнена всего на 40%. В это статье я приглашаю заглянуть под капот чистого кода и немного развеять иллюзию того что JVM все решит за Вас. Я не буду указывать правильный путь, а просто возьму два реальных стиля написания одного и того же кода, запущу их в трёх конфигурациях JVM и покажу, в какой момент чистый код внезапно оказывается дорогим удовольствием. Заглянуть

https://habr.com/ru/articles/1036992/

#java #jvm #производительность #gc #allocationrate #streams #функциональноепрограммирование #иммутабельность #бенчмарки #asyncprofiler

Java нас обманывает: скрытая цена чистого кода

Все началось с того что я неожиданно стал безработным Java-разработчиком. Да, сейчас такое случается. (и я кстати в поиске работы, если что) . А что делает увлеченный Java-разработчик, когда у него...

Хабр
How a Kernel Bug Froze My Machine: Debugging an Async-profiler Deadlock | QuestDB

How I investigated and worked around a kernel bug that caused async-profiler to freeze my machine whenever I tried to use a profiler.

QuestDB
type-pollution-agent/WHATIF.md at master · RedHatPerf/type-pollution-agent

Contribute to RedHatPerf/type-pollution-agent development by creating an account on GitHub.

GitHub
JVM Field Guide: Memory

This article is the first chapter of a concise field guide for running and supporting JVM applications, focusing on memory. The guide focuses on the most practical aspects of dealing with JVM applications, primarily server-side ones.

JVM Field Guide: Memory

How do profilers like #asyncprofiler work? How to write your own? Get your intense coding hat on because this brand new series by @parttimenerd from #SweetSapMachine tries to write a tiny sampling-based #profiler from scratch! Check it out on Foojay  Today...

https://foojay.io/today/writing-a-profiler-from-scratch-introduction

#foojaytip

Writing a Profiler from Scratch: Introduction

How do profilers like async-profiler work? How to write your own? This series tries to write a tiny sampling-based profiler from scratch!

foojay

RT @[email protected]

#AsyncProfiler 2.0 has been finally released!
Enjoy new fast Flame Graphs, JFR v2 compatible output, and ability to profile cpu+allocations+locks at the same time.
https://github.com/jvm-profiling-tools/async-profiler/releases/tag/v2.0

🐦🔗: https://twitter.com/AndreiPangin/status/1371191960757747714

Release Multievent profiling. JFR v2 compatible output · jvm-profiling-tools/async-profiler

v2.0 Features Profile multiple events together (cpu + alloc + lock) HTML 5 Flame Graphs: faster rendering, smaller size JFR v2 output format, compatible with FlightRecorder API JFR to Flame Graph ...