ฉันทราบวิธีการรับหน่วยความจำเฉลี่ยที่ใช้โดยแต่ละกระบวนการ apache2 โดยใช้ ps ฉันสังเกตแล้วและมีขนาดประมาณ 18MB (แม้ว่าจะดูเหมือนว่าจะเพิ่มขึ้นจาก 2 วันที่ผ่านมาจาก 18MB เฉลี่ยเป็น 25MB)
เซิร์ฟเวอร์ของเราให้บริการ API ซึ่งรับข้อมูลบางส่วนและจัดเก็บไว้ในฐานข้อมูล mysql API เขียนด้วย PHP ฉันใช้ฟังก์ชัน mem_get_usage และ mem_get_peak_usage ของ PHP เพื่อทำความเข้าใจการใช้หน่วยความจำ แต่ไม่มีที่ไหนเลยใกล้กับ 18MB .. (ส่วนใหญ่แสดงต่ำกว่า 1MB)
ดังนั้นฉันจึงไม่เข้าใจว่าอะไรคือการใช้หน่วยความจำขนาดใหญ่นี้ต่อกระบวนการ apache สิ่งนี้กลายเป็นปัญหาคอขวดเนื่องจาก RAM ทั้งหมดของเรามีจำกัด และด้วยปริมาณการใช้นี้ เราถูกบังคับให้จำกัด maxrequestworkers ซึ่งทำให้เกิดความล่าช้าในการให้บริการลูกค้าเมื่อมีทราฟฟิกสูง
เอาต์พุตทั่วไปจาก ps:
www-ข้อมูล 30024 0.0 0.3 494384 26124 ? S 04:27 0:03 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30077 0.0 0.3 494368 26136 ? S 04:28 0:04 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30078 0.4 0.3 494360 25960 ? S 04:28 0:21 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30080 0.1 0.3 494376 26140 ? S 04:28 0:05 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30115 0.2 0.3 494448 26180 ? S 04:28 0:11 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30124 0.1 0.3 494376 26212 ? S 04:28 0:07 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30132 0.0 0.3 494376 26108 ? S 04:28 0:03 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30135 0.0 0.3 494376 26164 ? S 04:28 0:04 /usr/sbin/apache2 -k เริ่มต้น
www-ข้อมูล 30219 0.0 0.3 494352 26108 ? S 04:29 0:03 /usr/sbin/apache2 -k เริ่มต้น
คำแนะนำใด ๆ เกี่ยวกับวิธีตรวจสอบการใช้หน่วยความจำต่อกระบวนการ apache2 และวิธีการลด / เพิ่มประสิทธิภาพ