أدوات التشخيص والسجلّات

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

يتناول هذا الموضوع أدوات الشبكة وأدوات JVM وسجلات التشخيص التي يمكنك استخدامها لتحديد المشاكل المتعلّقة بالشبكة وJVM وحلّها على Apigee Edge.

أداة التقاط حِزم بيانات TCP/IP (tcpdump)

tcpdump هي أداة لسطر الأوامر تعمل على تتبُّع حِزم البيانات وتتيح لك التقاط حِزم TCP/IP أو فلترتها عند تلقّيها أو نقلها عبر شبكة. وهو متاح على أنظمة التشغيل المستندة إلى Linux/Unix. يمكنك تثبيت هذه الأداة باستخدام yum كما يلي:

yum install tcpdump

تُعدّ أداة tcpdump مفيدة في تحديد المشاكل المتعلقة بالشبكة أو طبقة المقابس الآمنة (SSL) وحلّها. على سبيل المثال:

  • أخطاء 502: مدخل غير صالح (بسبب استثناء EOF)
  • أخطاء 503 Service Unavailable
  • أخطاء تأكيد الاتصال عبر طبقة المقابس الآمنة (SSL)

لتحديد المشاكل وحلّها، عليك أولاً تحديد زوج المكوّنات الذي حدث الخطأ بينهما. في حالة Edge، يمكن أن تكون إحدى القيمتين التاليتين:

  • تطبيق العميل وجهاز التوجيه
  • جهاز التوجيه ومعالج الرسائل
  • معالج الرسائل وخادم الخلفية

بعد تحديد زوج المكوّنات الذي يسبّب المشكلة، يمكنك التقاط حِزم الشبكة باستخدام tcpdump على أحد هذين المكوّنين أو كليهما.

تسجيل الحِزم المُرسَلة إلى/المستلَمة من مضيف معيّن باستخدام tcpdump

استخدِم أمر tcpdump التالي لالتقاط جميع حِزم البيانات المُرسَلة إلى مضيف (عنوان IP) محدّد أو المستلَمة منه، وحفظ المعلومات في الملف المحدّد:

tcpdump -i any -s 0 host <IP address> -w <File name>

المكان:

المعلَمة الوصف
-i (الواجهة) تحدّد الواجهة التي يجب التقاط الحِزم منها. يتيح استخدام القيمة "any" إمكانية تسجيل الحِزم من جميع الواجهات.
-s (snarf/snaplen) تحدّد مقدار كل حزمة سيتم التقاطها. يتيح لك استخدام القيمة 0 (صفر) تسجيل الحزمة بأكملها.
عنوان IP هو عنوان IP للمضيف الذي نريد تسجيل حِزم البيانات الخاصة به
اسم الملف هو اسم الملف الذي يجب كتابة tcpdump فيه

مثال

لنفترض أنّك تريد تسجيل الحِزم بين &quot;معالج الرسائل&quot; و&quot;خادم الخلفية&quot;:

  1. سجِّل الدخول إلى جهاز "معالج الرسائل".
  2. حدِّد عنوان IP الخاص بخادم الخلفية (افترِض أنّه 22.22.22.22) الذي نريد التقاط حِزم البيانات له.

استخدِم الأمر التالي لتسجيل حِزم الشبكة لمضيف لديه عنوان IP محدّد:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

إذا كان خادم الخلفية يتطابق مع عناوين IP متعددة، استخدِم اسم مضيف خادم الخلفية في أمر tcpdump كما هو موضّح أدناه:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

إذا كانت هناك عدة خوادم خلفية بعناوين IP مختلفة (22.22.22.22 و33.33.33.33 و44.44.44.44)، استخدِم أمر tcpdump أدناه:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

تحليل عمليات تفريغ حزم TCP

يمكنك عرض أو تحليل tcpdumps باستخدام أمر tcpdump أو أداة Wireshark المستندة إلى واجهة المستخدم التصويرية.

المراجع

لقطات لأجزاء من الذاكرة

لقطات لأجزاء من الذاكرة هي لقطة من ذاكرة عملية Java. وهي تحتوي على معلومات حول عناصر Java وفئاتها في الذاكرة المؤقتة عند جمع لقطة لأجزاء من الذاكرة. ويكون حجمها عادةً كبيرًا جدًا، ويتراوح بين بضع مئات من الميغابايت وبضع غيغابايت.

تُعد لقطة لأجزاء من الذاكرة مفيدة جدًا عندما تُظهر عملية Java، مثل "معالج الرسائل"، ما يلي:

  • استخدام الذاكرة بشكل كبير
  • OutofMemoryError

إنشاء لقطة لأجزاء من الذاكرة لعملية Java

توفّر Java أداة مساعدة تُسمى jmap، تتيح لك إنشاء إحصاءات الذاكرة أو عمليات تفريغ الذاكرة المخصّصة لعملية Java قيد التشغيل.

استخدِم أمر jmap التالي لإنشاء لقطة لأجزاء من الذاكرة لعملية Java:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

المكان:

المعلَمة الوصف
JAVA_HOME تمثّل دليل تثبيت Java
filename تمثّل اسم الملف الذي سيتم كتابة لقطة لأجزاء من الذاكرة إليه
pid تمثّل رقم تعريف عملية تطبيق Java الذي يجب تسجيل تفريغ الذاكرة الرئيسية له

مثال

لنفترض أنّ معالج الرسائل mp-east يستخدم مساحة كبيرة من الذاكرة أو يعرض أخطاء OutOfMemory. حدِّد معرّف عملية &quot;معالج الرسائل&quot; باستخدام الأمر ps على نظام التشغيل Unix. لنفترض أنّها 24569.

نفِّذ أداة jmap المساعدة على النحو التالي لإنشاء لقطة لأجزاء من الذاكرة:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

تحليل عمليات تفريغ الذاكرة المؤقتة

يمكن تحليل Heap Dumps باستخدام Eclipse MAT (أداة تحليل الذاكرة) لتحديد عمليات تسريب الذاكرة المحتملة أو كائنات Java التي تؤدي إلى ارتفاع معدل استخدام الذاكرة.

المراجع

كيفية جمع لقطة لأجزاء من الذاكرة

أداة JMAP

صفحة دليل JMAP

أداة تحليل الذاكرة (MAT)


عمليات تفريغ الذاكرة المؤقتة لسلاسل التنفيذ

إنّ تفريغ بيانات سلسلة التعليمات هو لقطة لحالة جميع سلاسل التعليمات في عملية Java نشطة. يتم عرض حالة كل سلسلة محادثات مع محتويات حزمة البيانات الخاصة بها، ويُشار إليها باسم "تتبُّع تسلسل استدعاء الدوال البرمجية". ستكون بعض سلاسل المحادثات جزءًا من تطبيق Java الذي يتم تشغيله، بينما ستكون سلاسل المحادثات الأخرى سلاسل محادثات داخلية في JVM.

تعرض عملية تفريغ الذاكرة معلومات عن أنشطة كل سلسلة من سلاسل التطبيق. يمكن أن تكون هذه المعلومات مفيدة جدًا في:

  • تشخيص المشاكل، مثل الارتفاعات المفاجئة في استخدام وحدة المعالجة المركزية أو بطء أوقات الاستجابة أو عدم استجابة تطبيقات Java
  • تحسين أداء التطبيق وJVM

إنشاء "عمليات تفريغ سلاسل التعليمات"

يمكن إنشاء تفريغ سلسلة التعليمات لعملية Java باستخدام أداة jstack المساعدة كما هو موضّح أدناه:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

المكان:

المعلَمة الوصف
JAVA_HOME تمثّل دليل تثبيت Java.
pid هو رقم تعريف عملية تطبيق Java الذي تريد تسجيل تفريغ الذاكرة المؤقتة له.
filename هو اسم الملف الذي سيتم كتابة تفريغ سلسلة التعليمات فيه.

مثال

لإنشاء تفريغ للذاكرة المؤقتة للعملية التي تحمل المعرّف 37320 على "معالج الرسائل" mp-east، استخدِم الأمر التالي:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

وفقًا للمثال أعلاه، سيتم حفظ تفريغ سلسلة التعليمات للعملية في الملف ‎/opt/apigee/edge-message-processor/mp-east-threadDump.txt.

تحليل عمليات تفريغ الذاكرة المؤقتة

يمكنك عرض تفريغات سلسلة التعليمات في أي محرّر نصوص، مثل vi (Linux) أو notepad (Windows). راجِع Thread Dump للحصول على تفاصيل حول الأقسام المختلفة من Thread Dump وكيفية تفسير المعلومات.

المراجع