คุณกำลังดูเอกสารประกอบ 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 | (อินเทอร์เฟซ) ระบุอินเทอร์เฟซที่ควรบันทึกแพ็กเก็ต การใช้ ค่า "any" จะอนุญาตให้บันทึกแพ็กเก็ตจากอินเทอร์เฟซทั้งหมด |
- วินาที | (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
ข้อมูลอ้างอิง
ฮีปดัมป์
ฮีปดัมป์คือสแนปชอตของหน่วยความจำของกระบวนการ Java โดยประกอบด้วย ข้อมูลเกี่ยวกับออบเจ็กต์และคลาสของ Java ในฮีปขณะที่ฮีปดัมป์ ที่รวบรวมไว้ โดยปกติไฟล์จะมีขนาดใหญ่พอสมควรซึ่งมีขนาดตั้งแต่ 100 MB ไปจนถึงไม่กี่เมกะไบต์ GB
ฮีปดัมป์มีประโยชน์มากเมื่อกระบวนการ 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 |
ชื่อไฟล์ | คือชื่อไฟล์ที่จะเขียนฮีปดัมป์ |
pid | เป็นรหัสกระบวนการของแอปพลิเคชัน Java ที่ต้องบันทึก Head Dump |
ตัวอย่าง
สมมติว่า Message Processor mp-east มีการใช้งานหน่วยความจำสูงหรือ ข้อผิดพลาด 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 Dump
เทรดดัมพ์สำหรับกระบวนการของ Java สามารถสร้างได้โดยใช้ยูทิลิตี jstack ดังที่แสดงไว้ ด้านล่าง
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
สถานที่:
พารามิเตอร์ | คำอธิบาย |
JAVA_HOME | เป็นไดเรกทอรีการติดตั้งของ Java |
pid | เป็นรหัสกระบวนการของแอปพลิเคชัน Java ที่คุณต้องการบันทึกเทรดดัมพ์ |
ชื่อไฟล์ | คือชื่อไฟล์ที่จะเขียนเทรดดัมพ์ |
ตัวอย่าง
เพื่อสร้างดัมพ์เทรดสำหรับรหัสกระบวนการ 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) โปรดดู Thread Dump เพื่อดูรายละเอียดเกี่ยวกับส่วนต่างๆ ของ Thread Dump และวิธีตีความ