يمكن أن تساعدنا مقالب الخيط في تحديد قمم وحدة المعالجة المركزية ، ودوقة الجمود ، واستثناءات الذاكرة ، والاستجابة البطيئة للتطبيق ، ووقت الاستجابة الطويل ومشاكل النظام الأخرى. يمكن لبعض أدوات التحليل عبر الإنترنت مثل http://fastthread.io/ أيضًا مساعدتنا في تحليل المشكلات وتحديد موقعها ، ولكن هذه الأدوات تتطلب ملف تفريغ. لذلك ، في هذه المقالة ، لخصت طرق الاستيلاء على ملفات مؤشر ترابط Java في 7.
1. JSTACK
JSTACK هي أداة سطر أوامر فعالة لملفات تفريغ مؤشرات الترابط. يقع في مجلد BIN (JDK_HOME/BIN) في دليل JDK. ما يلي هو أمر زحف ملفات التفريغ:
jstack -l <pid>> <path>
يوضح:
PID: معرف العملية لتطبيق Java ، أي معرف عملية التطبيق الذي يحتاج إلى زحف ملف التفريغ.
مسار الملف: المسار لحفظ ملف تفريغ.
مثال:
jstack -l 37320> /opt/tmp/threaddump.txt
يوضح المثال أعلاه استخدام JSTACK لإنشاء ملفات تفريغ في دليل /opt/tmp/threaddump.txt.
بدءًا من JAVA5 ، تم تضمين JSTACK في JDK. إذا كنت تستخدم الإصدار القديم من JDK ، فيجب عليك التفكير في استخدام طرق أخرى.
2. قتل -3
فيما يتعلق باعتبارات الأمان ، تحتوي بعض الآلات في بيئات الإنتاج على بيئات JRE فقط ، وبالتالي لا يمكن استخدام أداة JSTACK. في هذه الحالة ، يمكننا استخدام Kill -3:
kill -3 <pid>
يوضح:
PID: معرف العملية لتطبيق Java ، أي معرف عملية التطبيق الذي يحتاج إلى زحف ملف التفريغ.
مثال:
kill -3 37320
عند استخدام Kill -3 لإنشاء ملفات تفريغ ، يتم إخراج ملفات التفريغ إلى دفق الخطأ القياسي. إذا كان تطبيقك يعمل على Tomcat ، فسيتم إرسال محتوى التفريغ إلى ملف <Tomcat_Home> /logs/catalina.out.
3. JVISUALVM
Java VisualVM هي أداة واجهة رسومية يمكنها توفير معلومات JVM. يقع في ملف JDK_HOME/BIN/JVISUALVM.EXE. بدءًا من JDK6 Update7 ، يتم تضمينه في JDK.
Run JViSualVM ، وفي اللوحة اليسرى (كما هو موضح في الشكل أدناه) ، يتم سرد معلومات JVM قيد التشغيل. يمكن لهذه الأداة الحصول على ملفات تفريغ من JVMs المحلية أو عن بُعد.
انقر فوق زر تفريغ مؤشر الترابط المقابل لاسم العملية في الشكل أعلاه لإنشاء ملف تفريغ ، كما هو موضح في الشكل أدناه:
4. JMC
Java Mission Control (JMC) هي أداة يمكنها جمع البيانات وتحليلها من بيئة محلية أو إنتاجية. بدءًا من Oracle JDK 7 Update 40 ، يتم تضمينه في JDK ، والذي يمكنه إنشاء ملفات تفريغ من JVM. يقع JMC في ملف JDK_HOME/BIN/JMC.Exe:
بعد تشغيل الأداة ، يمكنك رؤية عملية Java تعمل محليًا ، والتي يمكن أيضًا توصيلها بجهاز بعيد. انقر نقرًا مزدوجًا فوق عملية Java التي تريد إنشاء ملف التفريغ ، وانقر فوق مسجل الرحلة ، وسوف ترى مربع الحوار التالي:
في المربع المنسدلة لتفريغ مؤشر الترابط ، يمكنك تحديد الفاصل الزمني لإنشاء ملف التفريغ. في المثال أعلاه ، سيتم إنشاء ملف تفريغ كل 60 ثانية. بعد الاختيار الكامل ، ابدأ مسجل الرحلة ويمكنك رؤية محتويات ملف التفريغ في لوحة مؤشرات الترابط:
5. Windows (Ctrl + Break)
هذه الطريقة صالحة فقط على أنظمة تشغيل Windows:
حدد سطر الأوامر في نافذة وحدة التحكم
اضغط على الأمر "Ctrl + Break" على نافذة سطر الأوامر
بعد ذلك ، سيتم إنشاء ملف تفريغ ، وسيتم طباعة محتويات ملف التفريغ على نافذة سطر الأوامر.
الملاحظة 1: هناك العديد من دفاتر الملاحظات (مثل سلسلة Lenovo T) التي ألغت مفتاح "Break" ، وفي هذه الحالة ، يجب عليك إلى Google لمفاتيح لها وظائف مماثلة مثل مفتاح Break ، ووجدت أن مفتاح "Function Key + B" هو نفس مفتاح Break ، لذلك استخدمت مفتاح "CTRL + FN + B" لإنشاء ملف DUMP.
ملاحظة 2: عيب واحد لاستخدام الطريقة أعلاه هو أن محتوى ملف التفريغ سيتم طباعته على وحدة التحكم. إذا لم يكن هناك ملف تفريغ ، فمن الصعب علينا استخدام أدوات التحليل مثل http://fasthread.io لتحليل ملف التفريغ. لذلك ، يمكنك استخدام الأمر التالي لإخراج محتوى ملف التفريغ إلى ملف نصي. على سبيل المثال ، اسم التطبيق الخاص بك هو SampleThreadProgram ، وبالتالي فإن الأوامر المعتادة هي كما يلي:
java -classpath . SampleThreadProgram
الأمر لإخراج محتويات ملف التفريغ إلى ملف نصي كما يلي:
java -classpath . SampleThreadProgram > C:/workspace/threadDump.txt 2>&1
بعد الضغط على مفتاح "Ctrl + Break" ، سيتم حفظ ملف التفريغ إلى C: /Workspace/ThreadDump.txt.
6. ThreadMxbean
بدءًا من JDK 1.5 ، تم تقديم ThreadMxbean. هذه هي واجهة إدارة JVM. باستخدام هذه الواجهة ، تحتاج فقط إلى كمية صغيرة من التعليمات البرمجية لإنشاء ملفات تفريغ. ما يلي هو التنفيذ الرئيسي لاستخدام ThreadMxBean لإنشاء ملفات تفريغ:
public void dumpThreadDump () {threadmxbean threadmxbean = managementfactory.getThReadMxBean () ؛ لـ (threadInfo ti: threadmxbean.dumpallThreads (true ، true)) {system.out.print (ti.toString ()) ؛ }}7. ديناميات تطبيق APM Tool
توفر بعض أدوات مراقبة أداء التطبيق وظيفة إنشاء ملفات تفريغ. إذا كنت تستخدم ديناميات التطبيق لمراقبة التطبيق الخاص بك ، فإن ما يلي هي الخطوات لإنشاء ملفات تفريغ:
افتح نافذة Create Action وحدد التشخيص-> خذ تفريغ مؤشر ترابط في نافذة إنشاء الإجراء ؛
أدخل اسم الإجراء ، وعدد ملفات التفريغ للزحف ، والفاصل الزمني (مللي ثانية) لزحف ملفات التفريغ ؛
إذا كنت ترغب في تنفيذ بعض الإجراءات قبل بدء إجراء تفريغ الزحف ، فيمكنك تحديد خانة الاختيار المتطلبات لتنفيذ الموافقة قبل هذا الإجراء وإدخال عنوان البريد الإلكتروني للفرد أو المجموعة ؛
انقر فوق موافق.
لخص
على الرغم من أنني أدرجت 7 طرق للاستيلاء على ملفات التفريغ في وقت سابق ، إلا أن IMHO و JSTACK و KILL -3 هي أفضل الخيارات للأسباب التالية:
أ. بسيطة وسهلة التنفيذ ؛
ب. عام: في معظم الحالات ، بغض النظر عن نوع نظام التشغيل ، بائع Java ، إصدار JVM ، إلخ.