Apache“ httpd” กระบวนการใช้หน่วยความจำเซิร์ฟเวอร์ทั้งหมดของฉัน


9

อินสแตนซ์ขนาดเล็ก ec2 ของฉันที่มีหน่วยความจำ 1.7 GB ที่เรียกใช้ Amazon AMI ที่ใช้ CentOS มีปัญหากับ Apache ที่ใช้หน่วยความจำมากเกินไป หากคุณดูภาพหน้าจอการใช้หน่วยความจำจะอยู่ที่ 90-100% จนกว่าฉันจะเริ่มต้นบริการ httpd ใหม่ซึ่งจะเริ่มต้นใหม่ซึ่งจะเพิ่มวิธีการสำรองข้อมูลมากถึง 90+%

ป้อนคำอธิบายรูปภาพที่นี่

ฉันขอขอบคุณความช่วยเหลือเกี่ยวกับวิธีค้นหาปัญหา นี่อาจเป็นพฤติกรรมของ Apache "ปกติ" เพื่อใช้หน่วยความจำที่มีอยู่ทั้งหมดหรือไม่ หรือมีการรั่วไหลที่เป็นไปได้ฉันต้องตามล่า ในขณะนี้ฉันค่อนข้างงุนงงว่าจะเกิดอะไรขึ้น

เรากำลังใช้ prefork Apache MPM และไม่มี sql หรืออะไรที่คล้ายกัน - แค่ apache เว็บไซต์ที่เป็นที่นี่


1
ดูเหมือนจะไม่ใช้การสลับใด ๆ ดังนั้นจึงมีปัญหาอะไร
HTTP500

ความจริงที่ว่าการใช้หน่วยความจำจำนวนมากไม่ควรกังวล ขอโทษประสบการณ์สามเณรของฉันฉันคิดว่ามันอาจเป็นข้อสันนิษฐานที่ไม่ถูกต้อง อาจเป็นพฤติกรรมปกติและ Apache ออกแบบมาเพื่อใช้หน่วยความจำทั้งหมดที่สามารถคว้าได้แม้ว่าจะเป็นเว็บไซต์ที่มีปริมาณการใช้งานต่ำ
Amivit

1
ฉันสังเกตเห็นว่าคุณกำลังใช้ NewRelic ซึ่งสามารถบันทึกเวลาที่ใช้ใน apache (อาจเป็นประโยชน์) หากคุณเพิ่มบรรทัดนี้ใน httpd conf ของคุณ: RequestHeader set X-Request-Start "%t"ถ้าคุณยังไม่ได้ สิ่งนี้จะปรากฏเป็น "คำขอการจัดคิว" เมื่อคุณไปที่ App Server> ภาพรวม - อาจช่วยให้คุณไปถึงจุดต่ำสุดของปัญหาได้
กม.

คำตอบ:


8

ดังที่ HTTP500 กล่าวไว้คุณอาจไม่ควรกังวลหากไม่ได้สำลักเครื่อง ลองดูที่ช่วยเหลือ! Linux กิน RAM ของฉัน! . มันไม่ได้เป็นสถานการณ์ที่คล้ายคลึงกันเนื่องจากคุณมีกระบวนการมากกว่าบัฟเฟอร์ที่ใช้ RAM แต่ไม่ไกลเกินไป: RAM ที่มีอยู่จริงของเครื่องของคุณเป็นทรัพยากรที่จะใช้ไม่ว่าจะเป็นเคอร์เนลบัฟเฟอร์หรือกระบวนการ Apache ของผู้ปฏิบัติงานเพื่อจัดการขาเข้าทันที การร้องขอ หากคุณไม่ได้ใช้ RAM คุณจ่ายเงินเกินขนาดกล่องของคุณ

อย่างไรก็ตามหากคุณต้องการเล่นด้วยการตั้งค่า MPM เอกสาร Apache คือhttp://httpd.apache.org/docs/current/mod/prefork.html

คุณสามารถลด MinSpareServers, StartServers และอื่น ๆ ตามที่คุณระบุว่าไซต์นั้นมีปริมาณการใช้งานต่ำ จากนั้นคุณจะมี RAM ว่างมากขึ้นที่เคอร์เนลบัฟเฟอร์ใช้เพื่อวัตถุประสงค์ที่เลวร้ายของพวกเขา


4

linux ที่ใช้หน่วยความจำทั้งหมดของคุณเป็นเรื่องปกติหน่วยความจำที่ไม่ได้ใช้งานจะถูกนำไปใช้เป็นแคชดิสก์อีกครั้ง ดู: linux กิน ram ของฉัน

คุณสามารถตรวจสอบสิ่งนี้ได้โดยดูที่ผลลัพธ์free -mและคาดว่าจะเห็นสิ่งนี้:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

บรรทัด +/- บัฟเฟอร์ / แคชเป็นสิ่งที่คุณต้องการ มันเพิ่มหน่วยความจำแคชให้ฟรีเพื่อให้คุณได้ภาพที่ดีขึ้นว่ามีหน่วยความจำเท่าใด ในกรณีนี้คุณต้องการให้ความสนใจกับหมายเลข 3416 ไม่ใช่ 101

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.