การเพิ่มประสิทธิภาพ Apache prefork - การเลือกค่า `MaxRequestsPerChild` ที่ถูกต้อง


9

ฉันพยายามเพิ่มประสิทธิภาพเว็บเซิร์ฟเวอร์ของเราเพื่อจัดการการเชื่อมต่อให้มากที่สุด ฉันอ่านบทความมากมายและบันทึก Apache ฉันพยายามเข้าใจว่าควรเลือกสิ่งMaxRequestsPerChildใด

ตอนแรกฉันพยายามตั้งค่าเป็น 4,000 แต่เซิร์ฟเวอร์มีปัญหาในการจัดการคำขอจำนวนมากดังนั้นฉันจึงเริ่มเพิ่ม ในขณะที่การตั้งค่าของฉันคือ:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

หลังจากตั้งค่าเป็นMaxRequestsPerChild40,000 เซิร์ฟเวอร์สามารถจัดการการเชื่อมต่อได้มากขึ้นในขณะที่ไม่ได้ใช้หน่วยความจำ / cpu มากขึ้น

ใครช่วยบอกฉันหน่อยได้ไหมว่าค่านี้สูงเกินไปหรือว่าโอเคที่มีมูลค่าสูงเช่นนี้?

ขอบคุณ!

ข้อมูลระบบปฏิบัติการ:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104

คำตอบ:


10

MaxRequestsPerChildมีประโยชน์เฉพาะในการ จำกัด จำนวนการรั่วไหลของหน่วยความจำเมื่อเวลาผ่านไปเมื่อเรียกใช้สคริปต์แบบไดนามิก หากคุณเพียงแค่ให้บริการเนื้อหาแบบคงที่หรือสคริปต์ขนาดเล็ก / ง่ายมากคุณสามารถตั้งค่าเป็น 0 หรือสูงมากโดยไม่มีผลกระทบมาก หากคุณใช้งานสคริปต์ที่มีขนาดใหญ่ / ซับซ้อนการตั้งค่าที่ 0 / สูงจะส่งผลให้กระบวนการ Apache ของคุณใช้หน่วยความจำมากขึ้นเรื่อย ๆ จำนวนขึ้นอยู่กับแอปพลิเคชันเฉพาะของคุณ

ในทางกลับกันการตั้งค่าให้ต่ำมากอาจส่งผลให้มีการใช้งาน CPU เพิ่มขึ้นเล็กน้อยเนื่องจากกระบวนการ Apache จะเริ่มต้นใหม่อย่างต่อเนื่อง

ฉันจะทำแบบทดสอบง่ายๆเพื่อดูว่าหน่วยความจำกระบวนการของคุณสามารถใช้ ตั้งค่าMaxRequestsPerChildเป็น 0 และรีสตาร์ท Apache ทดสอบโหลดไม่กี่หน้าและดูสิ่งที่ขนาดเริ่มต้นของกระบวนการ Apache topใช้ ตรวจสอบอีกครั้งหลังจากสองสามชั่วโมง / วัน / สัปดาห์ (ขึ้นอยู่กับแอปพลิเคชันและการดูหน้าเว็บของคุณ) และดูว่ามันเติบโตอย่างไร ถ้ามันไม่เติบโตมากแล้วค่า 0 หรือขนาดใหญ่มากMaxRequestsPerChildควรจะดี

หากคุณมีขนาดสูงสุดที่กำหนดไว้สำหรับกระบวนการ Apache ของคุณ (เช่นคุณต้องการให้มีขนาดไม่เกิน 50MB) จากนั้นคุณสามารถทำการทดสอบเดียวกันกับค่าต่าง ๆMaxRequestsPerChildจนกว่าคุณจะพบค่าที่ทำให้ Apache น้อยกว่านั้น


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