Score:0

Apache ทำให้เกิดการขัดขวางการโหลดจำนวนมากหลังจากรีบูต

ธง cn

เซิร์ฟเวอร์ของฉันใช้งาน Ubuntu 18.04.5 LTS พร้อม LAMP stack (PHP 7.4) และ apache เวอร์ชัน 2.4.29 โดยใช้ Prefork MPM เซิร์ฟเวอร์ของฉันมี 16 CPU และ RAM 29GB เซิร์ฟเวอร์นี้โฮสต์ 258 เว็บไซต์

เมื่อใดก็ตามที่ฉันรีบูทเซิร์ฟเวอร์ ฉันสังเกตเห็น (โดยใช้คำสั่งด้านบน) ว่า apache กำลังสร้างกระบวนการจำนวนมหาศาล นี่เป็นการโอเวอร์โหลดเซิร์ฟเวอร์อย่างสมบูรณ์ สิ่งนี้จะเกิดขึ้นเฉพาะเมื่อฉันรีบูตเซิร์ฟเวอร์ หรือฉันหยุด apache (service apache2 stop) ด้วยตนเอง แล้วเริ่ม apache (service apache2 start)

โดยปกตินี่คือเอาต์พุตของด้านบน (ในช่วงเวลาปกติ):

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

หลังจากรีบูตหรือหยุดและเริ่ม apache ด้วยตนเอง ค่าเฉลี่ยการโหลดจะเพิ่มขึ้นเป็นมากกว่า 126.4! จะค่อยๆ (ประมาณ 10-15 นาที) กลับสู่สภาวะปกติ ในช่วง 5 นาทีแรกหลังจากรีบูตหรือหยุดและเริ่มต้น apache โหลดจะไต่ขึ้นเรื่อย ๆ จนกระทั่งถึงประมาณ 126-130

นี่คือการกำหนดค่า MPM ของฉัน (/etc/apache2/mods-enabled/mpm_prefork.conf):

<IfModule mpm_prefork_module>
     StartServers           5
     MinSpareServers        5
     MaxSpareServers        10
     MaxRequestWorkers      150
     MaxConnectionsPerChild 0
 </IfModule>

นอกจากนี้ KeepAlive ยังเปิดอยู่ MaxKeepAliveRequests คือ 100 และ KeepAliveTimeout คือ 2

สิ่งที่แปลกมากคือฉันทำสำเนาของเซิร์ฟเวอร์อย่างถูกต้อง และวางไซต์จำนวนหนึ่ง (6 เว็บไซต์) บนสำเนานั้น และเมื่อฉันรีบูต หรือเริ่มและหยุด apache บนเซิร์ฟเวอร์สำเนานี้ พฤติกรรมนี้จะไม่เกิดขึ้น นี่เป็นสำเนาที่แน่นอนของเซิร์ฟเวอร์ที่กล่าวถึงข้างต้น มันเป็นเพียงการโฮสต์เว็บไซต์ 6 แห่งเท่านั้น (ทราฟฟิกน้อยลง) แทนที่จะเป็น 258

ปัญหานี้อาจเกิดจากการเชื่อมต่อไคลเอ็นต์มากเกินไปที่รอให้ apache ตอบสนองระหว่างการรีบูต และเมื่อเซิร์ฟเวอร์ apache กลับมาทำงานอีกครั้ง ในที่สุด apache จะล้นไปด้วยการเชื่อมต่อ

การเพิ่มค่าในการกำหนดค่า MPM ของฉันจะช่วยได้หรือไม่ ฉันตรวจสอบบันทึกแล้ว และฉันไม่เคยตรวจสอบ MaxRequestWorkers เลย

Michael Hampton avatar
cz flag
สิ่งแรกที่ต้องทำอย่างชัดเจนคือกำจัด mpm_prefork (และ mod_php) ประสิทธิภาพต่ำและเปลี่ยนไปใช้ php-fpm และ mod_event (หรือดีกว่าคือ nginx)
cn flag
นี่เป็นเซิร์ฟเวอร์ที่ใช้งานจริง การเปลี่ยนไปใช้ mod_event อาจทำให้เกิดปัญหาได้หรือไม่ ฉันแค่ไม่ต้องการเปลี่ยนและทำให้ไซต์ไคลเอนต์หยุดทำงาน
Michael Hampton avatar
cz flag
การทำแทบทุกอย่างอาจทำให้เกิดปัญหาได้ แต่นี่เป็นสิ่งที่คุณต้องทำเป็นเวลานานมาก บางทีอาจเป็นปี ดังนั้นคุณควรเริ่มวางแผนและทดสอบเพื่อดูว่าปัญหาเหล่านั้นน่าจะเป็นอย่างไร
ezra-s avatar
ru flag
ฉันเห็นด้วยกับ Michael Hampton ยกเว้นส่วน nginx ที่เขาใช้ทุกโอกาสเพื่อโปรโมต Apache ไม่ได้เป็นสาเหตุนั้น php เป็น ปัญหาคือการดูว่าคุณรวบรวมทั้งหมดได้ยากขึ้นหรือไม่ หากนี่คือการผลิต ฉันขอแนะนำให้คุณทดสอบการแทนที่ด้วย apache w/ mpm_event + php-fpm ที่จัดการกับ PHP ไม่เพียงแต่คุณจะควบคุมการกำหนดค่า php ได้มากขึ้นและยังมีหลายอันที่แตกต่างกันหากคุณต้องการ (กลุ่ม fpm) แต่คุณจะมีรอยเท้าที่เล็กกว่ามากจาก apache ด้วยกระบวนการบางอย่าง แต่แทนที่จะใช้เธรดผู้ปฏิบัติงานจำนวนมากเท่าที่จำเป็น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา