كيف يمكنك إنشاء وتحليل تفريغ مؤشر ترابط من مثيل JBoss قيد التشغيل؟
-
09-06-2019 - |
سؤال
كيف يمكنك إنشاء وتحليل تفريغ مؤشر ترابط من مثيل JBoss قيد التشغيل؟
المحلول
هناك طريقة خاصة بـ JBoss وهي أكثر سهولة في الاستخدام:
http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole
يعد هذا مفيدًا بشكل خاص عندما لا يكون لديك وصول مباشر إلى الجهاز المضيف (وهو ما يتطلبه "القتل").
نصائح أخرى
http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/
...
"على منصات UNIX، يمكنك إرسال إشارة إلى برنامج باستخدام أمر القتل.هذه هي إشارة الإنهاء، والتي يتم التعامل معها بواسطة JVM.على سبيل المثال، في Solaris، يمكنك استخدام الأمر kill -QUITprocess_id، حيث يكونprocess_id هو رقم العملية لبرنامج Java الخاص بك.
وبدلاً من ذلك، يمكنك إدخال تسلسل المفاتيح <ctrl>\ في النافذة التي تم فيها بدء تشغيل برنامج Java.يؤدي إرسال هذه الإشارة إلى توجيه معالج الإشارة في JVM لطباعة جميع المعلومات الموجودة على الخيوط والشاشات داخل JVM بشكل متكرر.
...
"تحديد حالات الموضوع
سترى العديد من سلاسل الرسائل المختلفة في العديد من الحالات المختلفة في لقطة من تتبع مكدس JVM.المفتاح المستخدم هو :
R موضوع قيد التشغيل أو قابل للتشغيل
S موضوع معلق
CW Thread ينتظر متغير الشرط
موضوع MW في انتظار قفل الشاشة
تم تعليق MS Thread في انتظار قفل الشاشة"
تم العثور على تطبيق Stacktrace هنا يعد مفيدًا أيضًا، خاصة على أجهزة Windows عندما لا يتم تشغيل تطبيق Java من سطر الأوامر.
Thread.getAllStackTraces() (منذ Java 1.5)
خيارين:
الخيار 1 قم بإنشاء تفريغ مؤشر ترابط باستخدام وحدة تحكم JMX
من أجل إنشاء تفريغ مؤشر الترابط:
- افتح JMXConsole (على سبيل المثال:
http://localhost:8080
) - انتقل إلى
jboss.system:type=ServerInfo
مبيان (تَلمِيح: ربما يمكنك فقط الضغط على CTRL-F وإدخال type=ServerInfo في مربع الحوار) - انقر على الرابط الخاص بمعلومات الخادم mbean.
- انتقل إلى الأسفل حيث تقول
listThreadDump
- انقر فوقه واحصل على تفريغ الموضوع الخاص بك
ملحوظات:
إذا كنت تستخدم Internet Explorer فيجب عليك استخدام File > Save As
لحفظ الإخراج بدلاً من نسخ البيانات إلى محرر نصوص.لسبب ما، عندما تقوم بنسخ النص من Internet Explorer، لا يتم نسخ فواصل الأسطر وينتهي كل الإخراج في سطر واحد.
الخيار 2 قم بإنشاء تفريغ مؤشر ترابط باستخدام Twiddle
وبدلاً من ذلك، يمكنك استخدام twiddle لتنفيذ ملف listThreadDump()
الأسلوب وتوجيه HTML الذي تم إرجاعه مباشرةً إلى الملف.استخدم سطر الأوامر هذا:
<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
في بعض الأحيان يتم قفل JBoss كثيرًا حتى أن jmx-concole لا يستجيب.في مثل هذه الحالة، استخدم kill -3 على Linux و إرسال الإشارة على ويندوز.
https://community.jboss.org/wiki/ThreadDumpJSP تحتوي الصفحة على Threaddump.war مستقل بذاته ويمكن استخدامه بدون JMX.