php-fpm: ช่วยให้เข้าใจ start_servers, min_spare_servers, max_spare_servers


10

ฉันพยายามที่จะปรับแต่งการติดตั้ง PHP-FPM ของฉันสำหรับเซิร์ฟเวอร์ของฉันและฉันมีปัญหาในการหาสิ่งที่จะทำอย่างไรกับpm.start_servers, pm.min_spare_serversและpm.max_spare_serversตัวแปร ฉันใช้pm = dynamic

pm.max_childrenชัดเจนอย่างสมบูรณ์แบบ กระบวนการลูกแต่ละรายการให้บริการ 1 เว็บไคลเอ็นต์พร้อมกัน ตกลง. "เซิร์ฟเวอร์" คืออะไร? ชัดเจนขึ้นอยู่กับการกำหนดค่าเริ่มต้นที่ฉันมี 1 เซิร์ฟเวอร์สามารถให้บริการมากกว่า 1 ลูก ขีด จำกัด บนคืออะไร ฉันควรใช้อะไรเป็นกฎง่ายๆสำหรับจำนวนเด็ก / เซิร์ฟเวอร์ หรือมันเกี่ยวข้องเลย ในฟอรัมบางคนอ้างว่า # ของเซิร์ฟเวอร์ควรเป็น 2 x # ของ cpu cores แต่ฉันได้เห็นการกำหนดค่าที่แนะนำซึ่งมีจำนวนสูงกว่ามาก 40-50

ทั้งเอกสาร PHP และบทความ "การปรับ php-fpm" หลายบทความนั้นไม่ได้มีประโยชน์เลย

คำตอบ:


14

โดยทั่วไปจำนวนกระบวนการที่ php-fpm จะทำงานอยู่ตลอดเวลานั้นสามารถกำหนดค่าได้อย่างมากเมื่อคุณตั้งค่าdynamicเช่นเดียวกับที่คุณทำ เมื่อตั้งค่าstaticจะมีเสมอเป็นไปได้ว่ากระบวนการที่เด็กหลายคนทำงาน โดยทั่วไปคุณตั้งค่าเป็นไดนามิกเพื่อประหยัดทรัพยากร กระบวนการลูกแต่ละกระบวนการสามารถจัดการคำขอเดียวได้ ขีด จำกัด สูงสุดนั้นขึ้นอยู่กับปริมาณแอปพลิเคชัน php ของคุณและปริมาณการใช้งานที่คุณได้รับ คุณควรคำนวณค่าเฉลี่ยการใช้หน่วยความจำของเด็กแต่ละคนและตรวจสอบให้แน่ใจว่าคุณไม่อนุญาตให้จำนวนเด็กเกินจำนวน ram ที่ติดตั้งบนเซิร์ฟเวอร์ของคุณไม่เช่นนั้นคุณจะเริ่มแลกเปลี่ยนหรือแม้กระทั่งเคอร์เนลเริ่มต้นกระบวนการฆ่า

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.

เมื่อตั้งค่าตัวเลือกเหล่านี้ให้พิจารณาสิ่งต่อไปนี้:

  • คำขอเฉลี่ยของคุณนานแค่ไหน
  • จำนวนสูงสุดของผู้เยี่ยมชมเว็บไซต์พร้อมกันคืออะไร?
  • กระบวนการลูกแต่ละกระบวนการใช้หน่วยความจำโดยเฉลี่ยเท่าใด

3
มีประโยชน์มากขอบคุณสำหรับความเข้าใจ นอกจากนี้ยังมีประโยชน์สำหรับการคำนวณใช้สิ่งนี้ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'เพื่อดูจำนวนหน่วยความจำของผู้ปฏิบัติงานแต่ละคน นำมาจากcommunity.webcore.cloud/tutorials/…
แมตต์เดอะนินจา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.