ตัวชี้วัดที่สำคัญสำหรับการทำโปรไฟล์หน่วยความจำในท่อ CI/CD มุ่งเน้นไปที่ประสิทธิภาพการรวบรวมรายละเอียดการรวบรวมรายละเอียด (GC) และไมโคร-เมทริกที่เกี่ยวข้องกับหน่วยความจำเพื่อจับความไร้ประสิทธิภาพของหน่วยความจำในช่วงต้นและป้องกันปัญหาการผลิต ตัวชี้วัดเหล่านี้นอกเหนือไปจากการใช้หน่วยความจำทั่วไปเพื่อรวมถึงพฤติกรรมระดับไมโครที่สามารถบ่งบอกถึงการรั่วไหลของหน่วยความจำคอขวดหรือการจัดการหน่วยความจำที่ไม่มีประสิทธิภาพ การตรวจสอบตัวชี้วัดเหล่านี้ช่วยให้สามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันลดการใช้งาน CPU และการตรวจจับความผิดพลาดเชิงรุก
Garbage Collection (GC) Micro-Metrics
1. เวลาหยุด GC เฉลี่ย: ตัวชี้วัดนี้วัดเวลาเฉลี่ยที่แอปพลิเคชันหยุดชั่วคราวในระหว่างเหตุการณ์การรวบรวมขยะแต่ละครั้ง เวลาหยุดชั่วคราวที่ต่ำกว่าบ่งบอกถึงการตอบสนองของแอปพลิเคชันที่ดีขึ้นเนื่องจาก GC หยุดหยุดการประมวลผลแอปพลิเคชันปกติชั่วคราว การติดตามสิ่งนี้ทำให้มั่นใจได้ว่าแอปพลิเคชันจะรักษาการตอบสนองในระหว่างรอบการทำความสะอาดหน่วยความจำ
2. สูงสุด GC เวลาหยุดชั่วคราว: นี่คือการหยุดชั่วคราวที่ยาวที่สุดในระหว่างเหตุการณ์การรวบรวมขยะใด ๆ ที่สังเกตได้ เวลาหยุดชั่วคราวสูงสุดเป็นเวลานานอาจทำให้แอปพลิเคชันล่าช้าหรือไม่ตอบสนองอย่างมีนัยสำคัญส่งสัญญาณถึงความจำเป็นในการปรับแต่งการกำหนดค่า GC หรือการตรวจสอบปัญหาการจัดการหน่วยความจำ
3. ปริมาณงาน GC: แสดงเป็นเปอร์เซ็นต์ตัวชี้วัดนี้สะท้อนถึงอัตราส่วนของเวลาที่แอปพลิเคชันใช้ในการทำงานที่มีประโยชน์เมื่อเทียบกับเวลาที่ใช้ในการรวบรวมขยะ เปอร์เซ็นต์ปริมาณงานที่สูงขึ้นหมายถึงการจัดการหน่วยความจำที่มีประสิทธิภาพด้วยค่าใช้จ่ายที่เกิดจาก GC น้อยที่สุดซึ่งบ่งบอกถึงประสิทธิภาพของแอปพลิเคชันที่ดีขึ้น
4. อัตราการจัดสรรวัตถุ: สิ่งนี้สะท้อนให้เห็นถึงอัตราที่วัตถุถูกสร้างขึ้นในหน่วยความจำโดยทั่วไปจะวัดใน MB/วินาที อัตราการจัดสรรที่สูงสามารถทำให้เกิดรอบ GC บ่อยครั้งซึ่งอาจนำไปสู่การเพิ่ม CPU และความเครียดของหน่วยความจำ การตรวจสอบมันช่วยระบุแหลมฉับพลันที่สามารถลดประสิทธิภาพได้
5. การบริโภคซีพียูจาก GC: เนื่องจากการรวบรวมขยะมีค่าใช้จ่ายมาก CPU การติดตามเวลา CPU ที่จัดสรรให้กับกระบวนการ GC จึงเป็นสิ่งจำเป็น ภาระ CPU ที่สูงจาก GC บ่งชี้ถึงความไร้ประสิทธิภาพหรือความต้องการในการปรับแต่งโดยมีผลกระทบที่อาจเกิดขึ้นกับประสิทธิภาพของระบบโดยรวมและต้นทุนทรัพยากร
6. ความถี่ GC: นักสะสมขยะในท่อส่งความถี่บ่อยแค่ไหน รอบ GC บ่อยครั้งอาจส่งสัญญาณการจัดสรรหน่วยความจำหรือการรั่วไหลมากเกินไปซึ่งนำไปสู่การเสื่อมสภาพที่อาจเกิดขึ้นในประสิทธิภาพ
7. จำนวนเหตุการณ์ GC เต็มจำนวน: เหตุการณ์ GC เต็มรูปแบบมีราคาแพงกว่าและทำให้หยุดพักนานขึ้น การตรวจสอบความถี่ของ GC แบบเต็มช่วยระบุว่าการจัดการหน่วยความจำจำเป็นต้องปรับปรุงหรือไม่
8. รอยเท้าหน่วยความจำ Post-GC: การวัดปริมาณหน่วยความจำจริงที่ใช้หลังจากเหตุการณ์ GC สะท้อนให้เห็นถึงประสิทธิภาพของการรวบรวมขยะและการรั่วไหลของหน่วยความจำนั้นมีอยู่หรือไม่
ตัวชี้วัดการใช้หน่วยความจำ
1. การใช้งานฮีป: ติดตามจำนวนหน่วยความจำกองที่ใช้เมื่อเวลาผ่านไป การเพิ่มแนวโน้มการใช้งานฮีปอาจบ่งบอกถึงการรั่วไหลของหน่วยความจำหรือการปล่อยหน่วยความจำที่ไม่มีประสิทธิภาพ
2. การใช้หน่วยความจำที่ไม่ใช่กอง: รวมถึง Metaspace และพื้นที่ JVM อื่น ๆ ที่ไม่เกี่ยวข้องกับกอง แต่สำคัญสำหรับแอปพลิเคชัน การตรวจสอบพื้นที่ที่ไม่ใช่กองสามารถระบุจุดแรงดันหน่วยความจำนอกกอง
3. การใช้หน่วยความจำดั้งเดิม: สำหรับแอปพลิเคชันที่ใช้ประโยชน์จากหน่วยความจำเนทีฟการติดตามการใช้งานสามารถป้องกันการอ่อนเพลียของหน่วยความจำ
4. อัตราการจัดสรรหน่วยความจำ: อัตราที่หน่วยความจำได้รับการจัดสรรและปล่อยโดยแอปพลิเคชันซึ่งมีผลต่อพฤติกรรม GC
5. จากอัตราความผิดพลาดของหน่วยความจำ: แม้ว่ามักจะเป็นเหตุการณ์ที่หายาก แต่การตรวจสอบการเกิดขึ้นหรือความเสี่ยงของ OutofMemoryError นั้นมีความสำคัญอย่างยิ่งต่อการหลีกเลี่ยงการชนหรือระบบการผลิต
ตัวชี้วัดระดับระบบที่เกี่ยวข้องกับหน่วยความจำ
1. การใช้งานการใช้งาน: สัญญาณการใช้งานที่สูงขึ้นของหน่วยความจำอ่อนเพลียในโฮสต์ประสิทธิภาพที่ลดลงและหมายถึงความจำเป็นในการทำโปรไฟล์หน่วยความจำใน CI/CD
2. อัตราความผิดพลาดของหน้า: ความผิดพลาดของหน้าเว็บที่เพิ่มขึ้นสามารถระบุการฟาดแบบหน่วยความจำซึ่งเป็นสัญญาณของแรงกดดันที่มากเกินไปใน RAM
3. ขนาดชุดถิ่นที่อยู่ (RSS): ส่วนของหน่วยความจำที่ครอบครองซึ่งจัดขึ้นใน RAM; การตรวจสอบ RSS ช่วยติดตามความทรงจำทางกายภาพที่กระบวนการใช้งานได้มากแค่ไหน
การรวมและเกณฑ์ใน CI/CD
- การเปิดใช้งานการบันทึก GC โดยละเอียดในสภาพแวดล้อม CI/CD (เช่นอาร์กิวเมนต์ JVM สำหรับบันทึก GC) ช่วยให้สามารถจับการวัด GC ที่ครอบคลุมในระหว่างการทดสอบประสิทธิภาพ
- บันทึกเหล่านี้สามารถแยกวิเคราะห์และวิเคราะห์โดยใช้เครื่องมือหรือ APIs ที่ให้ข้อมูลเชิงลึกและตรวจจับความผิดปกติเช่นการหยุด GC แบบยาว, GCs เต็มรูปแบบมากเกินไปหรือการใช้งานที่ผันผวน
- เกณฑ์สำหรับการวัดคีย์เช่น Max GC หยุดชั่วคราวเวลาหยุดชั่วคราวโดยเฉลี่ยและปริมาณงาน GC สามารถตั้งค่าต่อแอปพลิเคชันจำเป็นต้องล้มเหลวโดยอัตโนมัติเมื่อมีการ จำกัด เมื่อเกินขีด จำกัด การบังคับใช้มาตรฐานประสิทธิภาพ
- เกณฑ์ที่กำหนดเองมีความสำคัญเนื่องจากความต้องการหน่วยความจำแตกต่างกันไป: กระบวนการแบทช์ทนต่อการหยุด GC ที่ยาวนานขึ้นในขณะที่แอปพลิเคชันแบบโต้ตอบต้องการเวลาแฝงที่ต่ำมาก
ข้อควรพิจารณาเพิ่มเติม
- การตรวจสอบแนวโน้มเมื่อเวลาผ่านไปเป็นสิ่งจำเป็นสำหรับการตรวจจับการเสื่อมสภาพของหน่วยความจำแบบค่อยเป็นค่อยไปซึ่งอาจไม่ชัดเจนในการสร้างเดี่ยว
- เชื่อมโยงตัวชี้วัดหน่วยความจำกับตัวชี้วัดไปป์ไลน์อื่น ๆ เช่นอัตราการทดสอบความสำเร็จและสร้างระยะเวลาเพื่อทำความเข้าใจผลกระทบต่อความเสถียรของท่อโดยรวม
- การทำงานร่วมกันข้ามการพัฒนา QA และทีมปฏิบัติการทำให้มั่นใจได้ว่าตัวชี้วัดการทำโปรไฟล์หน่วยความจำสามารถดำเนินการได้และนำไปสู่การปรับปรุง
- รวมการทำโปรไฟล์หน่วยความจำเข้ากับประสิทธิภาพอัตโนมัติและการทดสอบโหลดภายในท่อส่ง CI/CD เพื่อจับปัญหาก่อน