تسجّل خيارات القياس ما تفعله عملية Elide أثناء تشغيلها.
| السؤال | الالتقاط | الفحص باستخدام |
|---|---|---|
| ماذا حدث أثناء التشغيل؟ | --jfr=run.jfr | jfr من JDK |
| ما الذي في الكومة؟ | --heap-dump=heap.hprof | VisualVM |
| كيف تتصرف الكومة بمرور الوقت؟ | --vmstat | jps، jstat |
| ماذا تفعل عملية قيد التشغيل؟ | jcmd PID | JFR، وتفريغات الكومة، ومكدسات الخيوط |
| أين تستهلك الشيفرة المصرّفة وقت المعالج؟ | --jitdump=DIR | perf على Linux |
اسرد الخيارات باستخدام elide help instruments. وهي تنطبق على run وعلى السكربتات والمقتطفات والوحدات. ضعها قبل أي
-- أو -m MODULE. يوفّر تثبيت JDK 25 الأدوات jfr و jcmd و jps و jstat؛ ويقرأ
VisualVM تفريغات الكومة. للتغطية وتتبع المعالج ومصححات الأخطاء، راجع
تصحيح الأخطاء. ولتصدير التتبعات والمقاييس والسجلات إلى منصة مراقبة، راجع OpenTelemetry.
التسجيل باستخدام JFR
elide --jfr=run.jfr run app.js
jfr summary run.jfr
jfr print --events 'dev.elide.*' run.jfrيستخدم --jfr إعدادات profile ويحفظ عند الخروج العادي. ويختار --jfr-settings=default أو مسار .jfc إعدادات
أخرى. لا يجوز أن تحتوي أسماء الملفات والإعدادات على فواصل أو علامات اقتباس مزدوجة.
| الحدث | يسجّل |
|---|---|
dev.elide.Boot | اكتمل بدء التشغيل؛ و elapsedNanos هو زمن بدء التشغيل. |
dev.elide.GuestStart / dev.elide.GuestStop | تشغيل برنامج نقطة الدخول، مع اللغة والمدة والنتيجة ورمز الخروج. |
dev.elide.HttpRequest / dev.elide.HttpResponse | طلب واحد عالجه الخادم، مع الطريقة والبروتوكول والحالة والمدة. |
dev. | طلب صادر واحد، مع زمن الانتظار والاتصال والبروتوكول والحالة وبايتات المتن. |
dev. | مصافحة TLS واحدة، مع المدة والدور والنتيجة و ALPN. |
dev.elide.Execution | انتهى الأمر، مع رمز خروجه. |
لا تُسجَّل عناوين URL ولا الترويسات ولا الحمولات.
تفريغ الكومة
elide --heap-dump=heap.hprof run app.js
elide --heap-dump-on-oom=oom.hprof run app.js
visualvm --openfile heap.hprofيكتب --heap-dump عند الخروج العادي. ويكتب --heap-dump-on-oom عند خطأ نفاد الذاكرة، ثم يخرج دون تشغيل خطافات
الإيقاف.
مراقبة عملية قيد التشغيل
elide --vmstat run app.js &
jps -l
jstat -gc PID 1sيُظهر --vmstat العملية في jps (برقم PID ودون اسم) ويتيح لـ jstat أخذ عيّنات منها. يتصل jcmd برقم PID مع
--vmstat أو دونه، على Linux و macOS، بمستخدم نظام التشغيل نفسه:
jcmd PID help
jcmd PID JFR.start name=profile settings=profile
jcmd PID JFR.dump name=profile filename=live.jfr
jcmd PID GC.heap_dump live.hprof
jcmd PID Thread.printلا تكتب العملية التي أُنهيت قسرًا ما التقطته. فرّغ التسجيل الجاري باستخدام jcmd قبل إيقافها.
تحليل الأداء باستخدام perf على Linux
perf record -k 1 --call-graph fp -o perf.data -- elide --jitdump=./jitdump run app.js
perf inject -j -i perf.data -o perf.jit.data
perf report -i perf.jit.dataيعمل --jitdump في نسخ الإصدار على Linux. احتفظ بمجلد jitdump حتى ينتهي perf inject. تظهر الدوال التي تعمل
كثيرًا تحت كائنات jitted-. ولا يثبت رمز الخروج صفر أن الالتقاط صالح؛ تحقق من أن التقرير يعرض دوالك. على WSL2،
يجب أن يطابق perf النواة العاملة.
خيارات الآلة الافتراضية
لكل خيار صيغة مقابلة بوصفه خيارًا للآلة الافتراضية:
--jfr=run.jfr -XX:StartFlightRecording=filename=run.jfr,settings=profile,dumponexit=true
--heap-dump-on-oom=oom.hprof -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=oom.hprof -XX:+ExitOnOutOfMemoryError
--vmstat -XX:+UsePerfData
--jitdump=DIR -XX:+RuntimeJitdump -XX:RuntimeJitdumpDir=DIRيفرّغ -XX:+DumpHeapAndExit -XX:HeapDumpPath=initial.hprof الكومة الأولية ثم يخرج. ويمثّل -Xmx و
-XX:MaxHeapSize الإعداد نفسه الذي يضبطه --max-mem؛ وتمرير الاثنين معًا خطأ.