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

מוצג המסמך של 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 Service Unavailable errors
  • כשלי לחיצת יד של SSL

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

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

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

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

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

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

כאשר:

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

דוגמה

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

  1. מתחברים למכשיר של מעבד ההודעות.
  2. קביעת כתובת ה-IP של שרת הקצה העורפי (נניח שהיא 22.22.22.22) שעבורה אנחנו רוצים כדי לתעד את החבילות.

משתמשים בפקודה הבאה כדי לתעד את חבילות הרשת של מארח עם IP ספציפי address:

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

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

קובצי עזר

תמונת מצב של הזיכרון

תמונת מצב של הזיכרון היא תמונת מצב של הזיכרון של תהליך Java. הם מכילים את מידע על האובייקטים והמחלקות של Java בערימה, ברגע שבו תמונת מצב של הזיכרון שנאספו. בדרך כלל הם די גדולים, וגודלם נע בין כמה 100MB לכמה GBs.

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

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

יצירת תמונת מצב של הזיכרון עבור תהליך Java

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

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

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

כאשר:

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

דוגמה

נניח שלמעבד ההודעות mp-east יש שימוש גבוה בזיכרון או שהוא זורק שגיאות חסרות זיכרון. קביעת מזהה התהליך של מעבד ההודעות באמצעות הפקודה ps מופעלת מערכת ההפעלה Unix. נניח שהכתובת היא 24,569.

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

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

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

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

קובצי עזר

איך אוספים תמונת מצב של הזיכרון

כלי jmap

דף אדם jmap

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


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

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

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

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

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

ניתן ליצור את תמונת מצב השרשור של תהליך Java באמצעות הכלי jstack כמו שמוצג למטה:

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

כאשר:

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

דוגמה

כדי ליצור תמונת מצב של שרשור עבור מזהה התהליך 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.

מנתחי קובצי Thread של Thread

אפשר לראות את קובצי תמונת המצב של השרשורים בכל עורך טקסט כמו vi (Linux), פנקס רשימות (Windows). ראה תמונת מצב של שרשורים לקבלת פרטים על קטעים שונים של תמונת מצב של שרשורים ואיך לפרש את מידע.

קובצי עזר