כלי אבחון ויומנים

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

הנושא הזה עוסק בכלים ברשת, בכלי JVM וביומני אבחון שבהם אפשר להשתמש כדי לפתור בעיות ברשת וב-JVM ב-Apigee Edge.

כלי לניהול מנות TCP/IP (tcpdump)

הכלי tcpdump הוא כלי למעקב אחר חבילות בשורת הפקודה, שמאפשר לכם לתעד או לסנן חבילות TCP/IP שהתקבלו או מועברות דרך רשת. התכונה זמינה במערכות הפעלה מבוססות Linux/Unix. תוכלו להתקין את תוכנית השירות הזו באמצעות yum באופן הבא:

yum install tcpdump

הכלי tcpdump שימושי לפתרון בעיות הקשורות לרשת או ל-SSL. לדוגמה:

  • 502 שגיאות שער שגוי (נגרמות עקב חריגת EOF)
  • 503 שגיאות לא זמינות של השירות
  • כשלי לחיצת יד של SSL

כדי לפתור כל אחת מהבעיות האלה, תחילה צריך לזהות את זוג הרכיבים שביניהם אירעה השגיאה. ב-Edge, הוא יכול להיות אחד מהצמדים הבאים:

  • אפליקציית לקוח ונתב
  • נתב ומעבד הודעות
  • מעבד הודעות ושרת קצה עורפי

לאחר זיהוי זוג הרכיבים הבעייתי, תוכל לתעד את חבילות הרשת באמצעות tcpdump באחד מהרכיבים האלו או בשניהם.

תיעוד מנות שנשלחו אל מארח ספציפי או התקבלו ממנו באמצעות tcpdump

אפשר להשתמש בפקודת tcpdump הבאה כדי לתעד את כל החבילות שנשלחו אל מארח מסוים (כתובת IP) או התקבלו ממנו, ולשמור את המידע בקובץ שצוין:

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

כאשר:

פרמטר תיאור
-i (interface) מציין את הממשק שממנו יש לתעד את החבילות. השימוש בערך של "any" מאפשר לתעד חבילות מכל הממשקים.
-s (snarf/snaplen) מציין את הכמות של כל חבילה שתתעד. אם תשתמשו בערך 0 (אפס) תוכלו לתעד את החבילה כולה.
כתובת IP היא כתובת ה-IP של המארח שעבורו אנחנו רוצים לתעד את החבילות
שם הקובץ הוא שם הקובץ שאליו צריך לכתוב את tcpdump

דוגמה

נניח שאתם רוצים לתעד את החבילות בין מעבד ההודעות לשרת הקצה העורפי:

  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

ניתוח tcpdumps

אפשר להציג או לנתח tcpdumps באמצעות הפקודה tcpdump או הכלי המבוסס על GUI Wireshark.

קובצי עזר

קובצי Dump של ערימה

קובצי Dump של ערימה (heap dumps) הם תמונת מצב של הזיכרון של תהליך Java. הם מכילים את המידע לגבי האובייקטים והמחלקות של Java בערימה נכון לרגע שבו נאסף dump הערימה. בדרך כלל הגודל שלהם נע בין 100MB לכמה GB.

Dump של ערימה שימושי מאוד כאשר תהליך Java, כמו מעבד הודעות, מציג:

  • שימוש בנפח גדול בזיכרון
  • OutofMemoryError

יצירת Dump של ערימה עבור תהליך Java

Java מספקת כלי שירות שנקרא jmap, שמאפשר ליצור את סטטיסטיקות הזיכרון או את נתוני ה-Dump של הערימה בתהליך Java פעיל.

משתמשים בפקודת jmap הבאה כדי ליצור את תמונת המצב של הזיכרון בתהליך Java:

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

כאשר:

פרמטר תיאור
JAVA_HOME האם ספריית ההתקנה של Java היא
שם קובץ האם יהיה שם הקובץ שבו תיכתב תמונת המצב של הזיכרון
pid הוא מזהה התהליך של אפליקציית Java שיש לתעד את תמונת ה-head שלה

דוגמה

נניח שמעבד ההודעות mp-east משתמש בנפח גדול של זיכרון או שהוא מריץ שגיאות OutOfMemory. מאתרים את מזהה התהליך של מעבד ההודעות באמצעות פקודת ps במערכת ההפעלה Unix. נניח שהכביש הוא 24569.

מריצים את הכלי jmap באופן הבא כדי ליצור את תמונת המצב של הזיכרון:

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

ניתוח Dumps של ערימה

אפשר לנתח Dumps של ערימה באמצעות הכלי Eclipse MAT (כלי לניתוח הזיכרון) כדי לקבוע אם יש דליפות זיכרון פוטנציאליות, או אילו אובייקטי Java מובילים לשימוש גבוה בזיכרון.

קובצי עזר

איך אוספים Dump של ערימה

תוכנת עזר של jmap

jmap man page

הכלי לניתוח הזיכרון (MAT)


מיקומי שרשורים

קובץ Dump של שרשור הוא תמונת מצב של כל ה-threads של תהליך Java פעיל. המצב של כל שרשור מוצג עם תוכן המקבץ, שנקרא 'דוח קריסות'. חלק מהשרשורים יהיו חלק מאפליקציית Java שפועלת, ואחרים יהיו שרשורים פנימיים של JVM.

תמונת מצב של שרשור חושפת מידע על כל אחת מפעילויות השרשורים של האפליקציה. המידע הזה יכול להועיל מאוד:

  • אבחון בעיות כמו עליות חדות במעבד (CPU), זמני תגובה איטיים או אפליקציות Java שלא מגיבות
  • אופטימיזציה של ביצועי אפליקציות ו-JVM

יצירת תבניות Dump של שרשורים

ניתן ליצור את קובץ ה-Dump של השרשור לתהליך Java באמצעות כלי העזר jstack, כפי שמוצג בהמשך:

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

כאשר:

פרמטר תיאור
JAVA_HOME היא ספריית ההתקנה של Java.
pid הוא מזהה התהליך של אפליקציית Java שאת תמונת השרשורים שלה ברצונך לתעד.
שם קובץ הוא שם הקובץ שבו ייכתב קובץ ה-Dump של השרשור.

דוגמה

כדי ליצור קובץ Dump של שרשור עבור מזהה התהליך 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), פנקס רשימות (Windows). בקטע Dump של שרשורים מופיעים פרטים על קטעים שונים של Dump של שרשורים ואיך לפרש את המידע.

קובצי עזר