מוצג המסמך של 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 |
דוגמה
נניח שאתם רוצים לתעד את חבילות המנות שבין מעבד ההודעות לקצה העורפי שרת:
- מתחברים למכשיר של מעבד ההודעות.
- קביעת כתובת ה-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 מובילים לשימוש גבוה בזיכרון.
קובצי עזר
איך אוספים תמונת מצב של הזיכרון
קובצי נתונים של שרשורים
תמונת מצב של שרשורים היא תמונת מצב של כל השרשורים בתהליך 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). ראה תמונת מצב של שרשורים לקבלת פרטים על קטעים שונים של תמונת מצב של שרשורים ואיך לפרש את מידע.