انتقل إلى المحتوى

المراقبة والتحليل

سجّل ملفات JFR، وفرّغ الكومة، وراقب عملية Elide قيد التشغيل باستخدام jcmd و jps و jstat، وحلّل الأداء باستخدام perf على Linux عبر خيارات القياس.

في هذه الصفحة

تسجّل خيارات القياس ما تفعله عملية Elide أثناء تشغيلها.

السؤالالالتقاطالفحص باستخدام
ماذا حدث أثناء التشغيل؟--jfr=run.jfrjfr من JDK
ما الذي في الكومة؟--heap-dump=heap.hprofVisualVM
كيف تتصرف الكومة بمرور الوقت؟--vmstatjps، jstat
ماذا تفعل عملية قيد التشغيل؟jcmd PIDJFR، وتفريغات الكومة، ومكدسات الخيوط
أين تستهلك الشيفرة المصرّفة وقت المعالج؟--jitdump=DIRperf على 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.elide.HttpClientExchangeطلب صادر واحد، مع زمن الانتظار والاتصال والبروتوكول والحالة وبايتات المتن.
dev.elide.TransportTlsHandshakeمصافحة 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؛ وتمرير الاثنين معًا خطأ.

هل كانت هذه الصفحة مفيدة؟