เรากำลังใช้งานเว็บไซต์ Drupal ที่มีประสิทธิภาพซึ่งทำตัวแบบทางการเงิน ดูเหมือนว่าเราจะใช้หน่วยความจำรั่วบางส่วนเนื่องจากข้อเท็จจริงที่ว่าเวลาที่หน่วยความจำ apache ใช้เพิ่มขึ้นในขณะที่จำนวนกระบวนการ apache ยังคงมีเสถียรภาพ:
เรารู้ว่าปัญหาหน่วยความจำมาจาก apache / PHP เพราะเมื่อใดก็ตามที่เราออก/etc/init.d/httpd reload
การใช้งานหน่วยความจำลดลง (ดูภาพหน้าจอด้านบนและด้านล่างเอาท์พุท CLI):
ก่อนที่จะโหลด httpd
$ ฟรี แคชบัฟเฟอร์ที่ใช้ร่วมกันทั้งหมดที่ใช้รวมกันหมดแล้ว Mem: 49447692 45926468 3521224 0 191100 22609728 - / + บัฟเฟอร์ / แคช: 23125640 26322052 แลกเปลี่ยน: 2097144 536552 1560592
หลังจาก httpd โหลดซ้ำ
$ ฟรี แคชบัฟเฟอร์ที่ใช้ร่วมกันทั้งหมดที่ใช้รวมกันหมดแล้ว Mem: 49447692 28905752 20541940 0 191360 22598428 - / + บัฟเฟอร์ / แคช: 6115964 43331728 แลกเปลี่ยน: 2097144 536552 1560592
แต่ละเธรด apache ได้รับการกำหนด PHP ที่memory_limit
512MB ซึ่งอธิบายการใช้งานหน่วยความจำสูงขึ้นอยู่กับปริมาณการร้องขอที่ต่ำและmax_execution_time
120 วินาทีซึ่งควรยุติเธรดที่การดำเนินการใช้เวลานานและควรป้องกันการเติบโตของการใช้หน่วยความจำอย่างต่อเนื่อง เห็น
ถาม: เราจะตรวจสอบสิ่งที่ทำให้หน่วยความจำรั่วได้อย่างไร
นึกคิดฉันกำลังมองหาขั้นตอนการแก้ไขปัญหาที่ฉันสามารถทำได้ในระบบโดยไม่ต้องรบกวนทีมงาน dev
ข้อมูลเพิ่มเติม:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
FYI เราทราบถึงปัญหาการแลกเปลี่ยนที่เรากำลังตรวจสอบแยกต่างหากและไม่มีส่วนเกี่ยวข้องกับการรั่วไหลของหน่วยความจำที่เราได้สังเกตเห็นก่อนที่การแลกเปลี่ยนจะเกิดขึ้น
memcached
ห้องสมุดPHP จากหน้าผู้ดูแล memcache memcache.php
ทั้งหมดที่เราเห็นคือเราได้จัดสรร5GB
ให้กับ memcache ซึ่ง3.3GB
มีการใช้งานอยู่ จะดีมากถ้าคุณสามารถช่วยเหลือเราเพิ่มเติมได้ที่นี่
memcached
ภูตเองอาจจะไม่เป็นไร มันเป็นไลบรารี memcache ของ PHP ซึ่งอาจหรืออาจจะไม่รั่วไหลหน่วยความจำ (และทำให้ Apache ใช้กระบวนการหน่วยความจำมากขึ้น) ปัญหาของฉันประมาณ 1-2 ปีที่ผ่านมาดังนั้นสิ่งต่างๆอาจได้รับการแก้ไขหลังจากนั้น อย่างไรก็ตามหาก memcached นั้นไม่จำเป็นสำหรับคุณลองปิดการใช้งานชั่วขณะหนึ่งและดูว่าการใช้หน่วยความจำ Apache ยังคงเพิ่มขึ้นหรือไม่
httpd
การใช้หน่วยความจำจะเพิ่มขึ้นเรื่อย ๆ และในที่สุดกล่องก็ล้มเหลวด้วยข้อความเคอร์เนลหน่วยความจำบางส่วน การแสดงนั้นดี (จนกว่าการใช้หน่วยความจำใกล้ถึงขีด จำกัด หน่วยความจำ) โปรดเพิกเฉยต่อปัญหาการแลกเปลี่ยน