คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
หัวข้อนี้จะกล่าวถึงเครื่องมือเครือข่าย เครื่องมือ JVM และบันทึกการวินิจฉัยที่คุณใช้เพื่อ แก้ปัญหาเกี่ยวกับเครือข่ายและ JVM ใน Apigee Edge ได้
ยูทิลิตี TCP/IP Packet Sniffer (tcpdump)
เครื่องมือ tcpdump เป็นเครื่องมือ Packet Sniffer แบบบรรทัดคำสั่งที่ช่วยให้คุณ บันทึกหรือกรองแพ็กเก็ต TCP/IP ที่ได้รับหรือโอนผ่านเครือข่ายได้ โดยเครื่องมือนี้พร้อมใช้งาน ในระบบปฏิบัติการที่ใช้ Linux/Unix คุณสามารถติดตั้งยูทิลิตีนี้โดยใช้ yum ได้ดังนี้
yum install tcpdump
เครื่องมือ tcpdump มีประโยชน์สำหรับการแก้ปัญหาเกี่ยวกับเครือข่ายหรือ SSL เช่น
- ข้อผิดพลาด 502 เกตเวย์ไม่ถูกต้อง (เกิดจากข้อยกเว้น EOF)
- ข้อผิดพลาด 503 ไม่พร้อมให้บริการ
- แฮนด์เชค SSL ไม่สำเร็จ
หากต้องการแก้ปัญหาเหล่านี้ คุณต้องกำหนดคู่คอมโพเนนต์ที่เกิดข้อผิดพลาดระหว่าง ในกรณีของ Edge คอมโพเนนต์ดังกล่าวอาจเป็นคู่ใดคู่หนึ่งต่อไปนี้
- แอปไคลเอ็นต์และเราเตอร์
- เราเตอร์และ Message Processor
- Message Processor และเซิร์ฟเวอร์แบ็กเอนด์
เมื่อระบุคู่คอมโพเนนต์ที่มีปัญหาได้แล้ว คุณจะบันทึกแพ็กเก็ตเครือข่าย โดยใช้ tcpdump ในคอมโพเนนต์เหล่านี้อย่างน้อย 1 รายการได้
การบันทึกแพ็กเก็ตที่ส่งไปยัง/ได้รับจากโฮสต์ที่เฉพาะเจาะจงโดยใช้ tcpdump
ใช้คำสั่ง tcpdump ต่อไปนี้เพื่อบันทึกแพ็กเก็ตทั้งหมดที่ส่งไปยังหรือได้รับจากโฮสต์ (ที่อยู่ IP) ที่ระบุ และบันทึกข้อมูลในไฟล์ที่ระบุ
tcpdump -i any -s 0 host <IP address> -w <File name>
โดยที่
| พารามิเตอร์ | คำอธิบาย |
| -i | (อินเทอร์เฟซ) ระบุอินเทอร์เฟซที่ควรบันทึกแพ็กเก็ต การใช้ ค่า "any" จะช่วยให้บันทึกแพ็กเก็ตจากอินเทอร์เฟซทั้งหมดได้ |
| -s | (snarf/snaplen) ระบุจำนวนแพ็กเก็ตที่จะบันทึก การใช้ค่า 0 (ศูนย์) จะช่วยให้คุณบันทึกแพ็กเก็ตทั้งหมดได้ |
| ที่อยู่ IP | คือที่อยู่ IP ของโฮสต์ที่เราต้องการบันทึกแพ็กเก็ต |
| ชื่อไฟล์ | คือชื่อไฟล์ที่ต้องเขียน tcpdump |
ตัวอย่าง
สมมติว่าคุณต้องการบันทึกแพ็กเก็ตระหว่าง Message Processor กับเซิร์ฟเวอร์แบ็กเอนด์
- เข้าสู่ระบบเครื่อง Message Processor
- กำหนดที่อยู่ 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
การวิเคราะห์ tcpdump
คุณสามารถดูหรือวิเคราะห์ tcpdump ได้โดยใช้คำสั่ง tcpdump หรือเครื่องมือ Wireshark ที่ใช้ GUI Wireshark
ข้อมูลอ้างอิง
ฮีปดัมป์
ฮีปดัมป์คือสแนปช็อตของหน่วยความจำของกระบวนการ Java โดยจะมีข้อมูลเกี่ยวกับออบเจ็กต์และคลาส Java ในฮีป ณ เวลาที่รวบรวมฮีปดัมป์ ซึ่งมักจะมีขนาดค่อนข้างใหญ่ ตั้งแต่ 100 เมกะไบต์ไปจนถึงหลาย กิกะไบต์
ฮีปดัมป์มีประโยชน์มากเมื่อกระบวนการ Java เช่น Message Processor แสดงสิ่งต่อไปนี้
- การใช้งานหน่วยความจำสูง
- 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 ที่ต้องบันทึกฮีปดัมป์ |
ตัวอย่าง
สมมติว่า Message Processor mp-east มีการใช้งานหน่วยความจำสูงหรือแสดงข้อผิดพลาด OutOfMemory กำหนดรหัสกระบวนการของ Message Processor โดยใช้คำสั่ง ps ในระบบปฏิบัติการ Unix สมมติว่าเป็น 24569
เรียกใช้เครื่องมือ jmap ดังนี้เพื่อสร้างฮีปดัมป์
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
การวิเคราะห์ฮีปดัมป์
คุณสามารถวิเคราะห์ฮีปดัมป์ได้โดยใช้ Eclipse MAT (Memory Analyzer Tool) เพื่อกำหนด การรั่วไหลของหน่วยความจำที่อาจเกิดขึ้นหรือออบเจ็กต์ Java ที่ทำให้มีการใช้งานหน่วยความจำสูง
ข้อมูลอ้างอิง
เครื่องมือ Memory Analyzer (MAT)
เธรดดัมป์
เธรดดัมป์คือสแนปช็อตของสถานะของเธรดทั้งหมดในกระบวนการ Java ที่กำลังทำงาน สถานะของแต่ละเธรดจะแสดงพร้อมกับเนื้อหาของสแต็ก ซึ่งเรียกว่าสแต็กเทรซ เธรดบางรายการจะเป็นส่วนหนึ่งของแอปพลิเคชัน Java ที่กำลังทำงาน ขณะที่เธรดอื่นๆ จะเป็น เธรดภายในของ JVM
เธรดดัมป์จะแสดงข้อมูลเกี่ยวกับกิจกรรมของเธรดแต่ละรายการในแอปพลิเคชัน ข้อมูลนี้มีประโยชน์อย่างมากสำหรับสิ่งต่อไปนี้
- วิเคราะห์ปัญหาต่างๆ เช่น CPU Spike, เวลาในการตอบสนองช้า หรือแอปพลิเคชัน Java ไม่ตอบสนอง
- เพิ่มประสิทธิภาพแอปพลิเคชันและ JVM
การสร้างเธรดดัมป์
คุณสามารถสร้างเธรดดัมป์สำหรับกระบวนการ Java ได้โดยใช้เครื่องมือ jstack ดังที่แสดง ด้านล่าง
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
โดยที่
| พารามิเตอร์ | คำอธิบาย |
| JAVA_HOME | คือไดเรกทอรีการติดตั้ง Java |
| pid | คือรหัสกระบวนการของแอปพลิเคชัน Java ที่คุณต้องการบันทึกเธรดดัมป์ |
| filename | คือชื่อไฟล์ที่จะเขียนเธรดดัมป์ |
ตัวอย่าง
หากต้องการสร้างเธรดดัมป์สำหรับรหัสกระบวนการ 37320 ใน Message Processor 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) โปรดดูรายละเอียดเกี่ยวกับส่วนต่างๆ ของเธรดดัมป์และวิธีตีความ ข้อมูลได้ที่ เธรดดัมป์