คุณกำลังดูเอกสารประกอบของ 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 ในคอมโพเนนต์หนึ่งหรือทั้ง 2 คอมโพเนนต์
การบันทึกแพ็กเก็ตที่ส่ง/รับจากโฮสต์ที่เฉพาะเจาะจงโดยใช้ tcpdump
ใช้คำสั่ง tcpdump ต่อไปนี้เพื่อบันทึกแพ็กเก็ตทั้งหมดที่ส่งหรือรับจากโฮสต์ที่ระบุ (ที่อยู่ IP) และบันทึกข้อมูลในไฟล์ที่ระบุ
tcpdump -i any -s 0 host <IP address> -w <File name>
โดยที่
พารามิเตอร์ | คำอธิบาย |
-i | (interface) ระบุอินเทอร์เฟซสำหรับการเก็บข้อมูลแพ็กเก็ต การใช้ค่า "any" จะช่วยให้บันทึกแพ็กเก็ตจากอินเทอร์เฟซทั้งหมดได้ |
-วิ | (snarf/snaplen) ระบุปริมาณของแต่ละแพ็กเก็ตที่จะบันทึก การใช้ค่า 0 (ศูนย์) จะช่วยให้คุณบันทึกทั้งแพ็กเก็ตได้ |
ที่อยู่ IP | คือที่อยู่ IP ของโฮสต์ที่เราต้องการบันทึกแพ็กเก็ต |
ชื่อไฟล์ | คือชื่อของไฟล์ที่จะต้องเขียน tcpdump ไว้ |
ตัวอย่าง
สมมติว่าคุณต้องการบันทึกแพ็กเก็ตระหว่างเครื่องมือประมวลผลข้อความและเซิร์ฟเวอร์แบ็กเอนด์
- ลงชื่อเข้าใช้เครื่องประมวลผลข้อความ
- ระบุที่อยู่ 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 หรือเครื่องมือ Wireshark ใน GUI
รายการอ้างอิง
ฮีพดัมพ์
ฮีพดัมพ์คือสแนปชอตของหน่วยความจำของกระบวนการของ Java โดยไฟล์ดังกล่าวจะประกอบด้วยข้อมูลเกี่ยวกับออบเจ็กต์และคลาสของ Java ในฮีปในขณะที่มีการรวบรวมฮีพดัมพ์ ซึ่งมักจะมีขนาดค่อนข้างใหญ่ตั้งแต่ 100 MB ถึง 2-3 GB
ฮีพดัมพ์จะมีประโยชน์มากเมื่อโปรเซสของ 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 |
ชื่อไฟล์ | คือชื่อไฟล์ที่จะเขียนฮีพดัมพ์ |
pid | คือรหัสกระบวนการของแอปพลิเคชัน Java ที่ต้องบันทึก Head Dump |
ตัวอย่าง
สมมติว่า mp-east ของ Message Processor มีการใช้งานหน่วยความจำสูง หรือมี ข้อผิดพลาด OutOfMemory กำหนดรหัสกระบวนการของผู้ประมวลผลข้อมูลข้อความโดยใช้คำสั่ง ps บนระบบปฏิบัติการ Unix สมมติว่าเป็น 24569
เรียกใช้ยูทิลิตี Jmap ต่อไปนี้เพื่อสร้างฮีพดัมพ์
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
กำลังวิเคราะห์ฮีพดัมพ์
คุณวิเคราะห์ฮีพดัมพ์ได้โดยใช้ Eclipse MAT (เครื่องมือวิเคราะห์หน่วยความจำ) เพื่อระบุการรั่วไหลของหน่วยความจำที่อาจเกิดขึ้น หรือออบเจ็กต์ Java ใดที่ทำให้มีการใช้งานหน่วยความจำสูง
รายการอ้างอิง
เครื่องมือวิเคราะห์หน่วยความจำ (MAT)
ขยะชุดข้อความ
เทรดดัมพ์คือสแนปชอตสถานะของเทรดทั้งหมดของกระบวนการ Java ที่ทำงานอยู่ สถานะของเทรดแต่ละรายการจะแสดงพร้อมเนื้อหาของสแต็ก ซึ่งเรียกว่าสแต็กเทรซ เทรดบางส่วนจะเป็นส่วนหนึ่งของแอปพลิเคชัน Java ที่ทำงานอยู่ ในขณะที่เทรดอื่นๆ จะเป็นเทรดภายในของ JVM
เทรดดัมพ์จะแสดงข้อมูลเกี่ยวกับกิจกรรมเทรดของแต่ละแอปพลิเคชัน ข้อมูลนี้อาจมีประโยชน์อย่างมากต่อสิ่งต่อไปนี้
- วิเคราะห์ปัญหา เช่น การเพิ่มขึ้นของ CPU, เวลาในการตอบสนองช้า หรือแอปพลิเคชัน Java ไม่ตอบสนอง
- เพิ่มประสิทธิภาพแอปพลิเคชันและ JVM
กำลังสร้างไฟล์ดัมพ์ชุดข้อความ
คุณสร้างดัมพ์ Thread สำหรับกระบวนการ 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
ตามตัวอย่างข้างต้น ระบบจะบันทึก Thread Dump ของกระบวนการนี้ไว้ในไฟล์ /opt/apigee/edge-message-processor/mp-east-threadDump.txt
กำลังวิเคราะห์เทรดดัมพ์
คุณสามารถดูชุดข้อความย่อยๆ ในโปรแกรมแก้ไขข้อความใดก็ได้ เช่น vi (Linux), Notepad (Windows) ดูรายละเอียดเกี่ยวกับส่วนต่างๆ ของ Thread Dump และวิธีตีความข้อมูลที่ ดัมพ์เทรด