4
ฉันจะหาสาเหตุของการรั่วไหลของหน่วยความจำที่ชัดเจนใน Apache / PHP บนเว็บแอพได้อย่างไร
ประมาณสัปดาห์ละครั้ง แต่บางครั้งแม้แต่สองครั้งต่อวันหลังจากทำงานได้ดีสำหรับวันอินสแตนซ์ EC2 ของฉันไม่ตอบสนอง กราฟหน่วยความจำของ Munin บอกเล่าเรื่องราวที่ค่อนข้างตรงไปตรงมา: หน่วยความจำที่จัดสรรให้กับ "แอพ" เริ่มเพิ่มขึ้นและจะไม่หยุดจนกว่าจะมีการใช้งาน swap อย่างเต็มประสิทธิภาพ กราฟที่กำหนดเองอื่น ๆ แสดงว่ากระบวนการที่กำลังเติบโตอย่างต่อเนื่องคือ apache2 ฉันเรียกใช้การตั้งค่า Apache prefork มาตรฐานพร้อม mod_php และสคริปต์ PHP สองสามตัว ดังที่คุณเห็นในกราฟด้านล่างมีบางอย่างเกิดขึ้นที่เรียกใช้กระบวนการ apache2 เพื่อเริ่มใช้หน่วยความจำมากขึ้นเรื่อย ๆ เข็มสีเขียวอันแรกที่ฉันจับได้ทันเวลาและรีสตาร์ท Apache ก่อนที่สิ่งต่าง ๆ จะหมดไป เข็มที่สองได้รับอีกนิดและอินสแตนซ์จะต้องรีบูตทันที กราฟหน่วยความจำ Munin สิ่งที่ฉันสงสัยคือจะแก้ไขข้อบกพร่องนี้ได้อย่างไร ขาดการตั้งค่า PHP ด้วย FastCGI และทำให้มันทำงานในกระบวนการของตัวเองเป็นวิธีที่ดีในการค้นหาว่าเป็น Apache หรือการรวมกันของ PHP และรหัสของฉันที่ทำให้เกิดการใช้หน่วยความจำมากเกินไป? พวกคุณทำอะไรเพื่อติดตามปัญหานี้? UPDATE: ฉันสามารถติดตามการรั่วไหลหลังจากที่ strace …
18
php
apache-2.2
memory