เครื่องมือและบันทึกการวินิจฉัย

คุณกำลังดูเอกสารประกอบ 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 กับแบ็กเอนด์ เซิร์ฟเวอร์:

  1. ลงชื่อเข้าใช้เครื่อง Message Processor
  2. ระบุที่อยู่ 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 ที่อาจทำให้มีการใช้งานหน่วยความจำสูง

ข้อมูลอ้างอิง

วิธีรวบรวมฮีปดัมป์

เครื่องมือ jmap

หน้า jmap man

เครื่องมือวิเคราะห์หน่วยความจำ (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 และวิธีตีความ

ข้อมูลอ้างอิง