تخطَّ إلى المحتوى

async-profiler - مرتجل JVM منخفض العلى

async-profiler - مرتجل JVM منخفض العلى

async-profiler هي أداة تحليل العينات منخفضة العلى للجنة الافتراضية لجافا. أدوات جافا التقليدية فقط عينة في نقاط الأمان، والتي تميل النتائج نحو أي رمز يتفق أن يجلس بالقرب من نقطة أمان ويمكن أن يخفي المسار الساخن الحقيقي. async-profiler يستخدم AsyncGetCallTrace بالإضافة إلى أحداث perf للعينة في أي مكان، بما في ذلك الرمز الأصلي وإطارات kernel، مما يعطي صورة أكثر صدقًا. ملفات تعريف CPU والتخصيصات والقفل contention وغيرها، وتصدير مخططات اللهب أو JFR.

التثبيت

الطريقةكيف
تحميلاحصل على tarball الإفراج لمنصتك
استخراجtar xzf async-profiler-*.tar.gz
تشغيل./bin/asprof <pid> (أحدث) أو ./profiler.sh <pid>
الأذوناتقد تحتاج إلى sysctl kernel.perf_event_paranoid=1 و kernel.kptr_restrict=0
التحقق./bin/asprof --version

التحليل الأساسي

الأمرالوصف
asprof -d 30 -f out.html <pid>ملف تعريف 30 ثانية → مخطط اللهب
asprof -e alloc -d 30 -f alloc.html <pid>تخصيص ملف التعريف
asprof -e lock -d 30 -f lock.html <pid>تأمين contention
asprof -e wall -d 30 -f wall.html <pid>ساعة الحائط (تشمل الانتظار)
asprof start <pid> / asprof stop -f out.html <pid>بدء/إيقاف يدوي
jpsالبحث عن pid JVM

أنواع الأحداث

الحدثالمقاييس
cpuوقت CPU (افتراضي)
allocتخصيصات الكومة حسب المكدس
lockقفل/مراقب contention
wallساعة الحائط بما في ذلك وقت محظور
itimerالرجوع عندما يكون perf غير متاح
cache-misses, page-faultsأحداث perf الأجهزة/البرمجيات
# أين تقضي التطبيق فعلاً وقت الساعة الحائط (شمل انتظار IO)؟
./bin/asprof -e wall -t -d 30 -f wall.html <pid>

تنسيقات الإخراج

العلمينتج
-f out.htmlمخطط اللهب التفاعلي
-o collapsedالمكاده المطوية (لأدوات FlameGraph)
-o treeشجرة استدعاء
-o flatقائمة الطريقة الساخنة المسطحة
-f out.jfrتسجيل JFR (مفتوح في JMC)
-tانقسام حسب الموضوع

الإطلاق مع الوكيل

# ملف التعريف من بدء JVM (يلتقط الاحماء)
java -agentpath:/path/libasyncProfiler.so=start,event=cpu,file=profile.html \
  -jar app.jar
خيار الوكيلالغرض
startابدأ على الفور
event=cpu|alloc|lockما يجب أخذ عينة منه
file=NAMEمسار الإخراج
interval=10msفترة أخذ العينات
jfrبث تنسيق JFR

قراءة مخطط اللهب

الميزةالمعنى
العرضحصة العينات (الوقت) — أوسع أكثر سخونة
الارتفاععمق المكدس، وليس الكلفة
الألوانجافا (أخضر)، أصلي (أصفر-ish)، kernel (برتقالي)
انقرتكبير في شجرة فرعية
بحثتسليط الضوء على الإطارات المطابقة

ابحث عن الهضاب العريضة — إطار واحد يستهلك حصة أفقية كبيرة هو البقعة الساخنة الخاصة بك. يتم مزج إطارات جافا/أصلي/kernel هي بالضبط ما تخفيه محللات الانحياز نقطة الأمان.

سير العمل الشائع

# 1) البقع الساخنة CPU في الخدمة الجارية
./bin/asprof -d 60 -f cpu.html $(jps | grep MyApp | cut -d' ' -f1)

# 2) مطاردة ضغط القمامة — من يخصص الأكثر؟
./bin/asprof -e alloc -d 60 -f alloc.html <pid>

# 3) الخيوط تبدو خاملة لكن الكمون مرتفع → ساعة الحائط
./bin/asprof -e wall -t -d 30 -f wall.html <pid>

# 4) Contention على مورد مشترك
./bin/asprof -e lock -d 30 -f lock.html <pid>

async-profiler مقابل البدائل

الجانبasync-profilerJFRVisualVM
انحياز نقطة الأمانتم تجنبهمخفضحاضر
إطارات أصلي/kernelنعممحدودلا
العلىجداً منخفضمنخفضأعلى
تخصيص ملف التعريفنعمنعمأساسي
الأفضل لـنقاط ساخنة JVM دقيقةتسجيل مستمر مدمجفحص GUI سريع

نظير JVM إلى perf + FlameGraph للرمز الأصلي.

الموارد