Apache MPMs - Worker vs Prefork


13

ฉันพยายามคิดว่า Apache MPM ที่ดีที่สุดที่ฉันสามารถติดตั้งบน VPS ของฉันได้คืออะไร ฉันเห็นมาตรฐานและ MPM Worker ทำงานได้ดีกว่า Prefork แต่ด้วยเหตุผลบางอย่างที่ทุกคนแนะนำให้ใช้ Prefork มากกว่า Worker สำหรับการตั้งค่า PHP

นี่เป็นเพราะฟังก์ชั่น PHP บางอันไม่ปลอดภัยต่อเธรดหรือไม่? เพียง แต่setlocale()มาถึงใจ แต่ฉันจะใช้สถานที่เดียวกันในทุกกรณีดังนั้นผมจึงไม่คิดว่าจะเป็นปัญหา VPS ของฉันมีหน่วยความจำน้อยและฉันรู้สึกว่า MPM ของคนงานจะเหมาะกับความต้องการของฉันมากขึ้น แต่ฉันไม่แน่ใจ

บางคนสามารถช่วยฉันตัดสินใจเรื่องนี้ได้ไหม ขอบคุณ!


PS:ฉันก็ดู nginx และ lighttpd nginx ดูยอดเยี่ยม แต่ฉันพยายามหลีกเลี่ยงการคอมไพล์จากแหล่งที่มาและฉันยังไม่เข้าใจว่า php-fpm มีไว้เพื่ออะไร เกี่ยวกับ lighttpd - มันง่ายอย่างเหลือเชื่อในการติดตั้ง PHP / FCGI ด้วย แต่ฉันได้ยินมาว่าหน่วยความจำรั่ว สิ่งนี้ยังคงเป็นจริงหรือไม่?


2
ปัญหาคือในขณะที่ PHP หลักควรจะปลอดภัยเธรดเมื่อมันมาถึงส่วนขยายการเดิมพันทั้งหมดจะปิด
mattdm

คำตอบ:


12

คุณควรใช้ prefork เมื่อใช้ apache + mod_php คำถามที่พบบ่อยอย่างชัดเจนแสดงเหตุผลว่าทำไม:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

ทำไมฉันไม่ควรใช้ Apache2 กับ MPM แบบเธรดในสภาพแวดล้อมการใช้งานจริง

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

nginx + php-fpm เป็นวิธีที่ยอดเยี่ยมในการรันแอพพลิเคชัน php nginx มีการสนับสนุนพื้นเมืองสำหรับ FastCGI และ php-fpm เป็นหนึ่งในวิธีที่ดีที่สุดในการรัน php ในสภาพแวดล้อม FastCGI ดูเอกสาร PHP ที่นี่:

http://www.php.net/manual/en/install.fpm.php


เกี่ยวกับ Apache MPMs ฉันคิดว่าฉันเข้าใจแล้ว prefork เป็นวิธีที่จะไป ฉันอยากติดตั้ง nginx หรือ lighttpd เนื่องจากการใช้หน่วยความจำสูงของ Apache Lighttpd และ PHP-FCGI ทำงานนอกกรอบเมื่อติดตั้งด้วยความถนัด แต่ฉันไม่แน่ใจว่าหน่วยความจำรั่วไหลทุกคนยังคงพูดคุยเกี่ยวกับย้อนกลับไปใน 06/07 ยังคงอยู่ ฉันยังอ่าน Nginx มีการใช้งาน CPU ต่ำกว่า แต่ฉันไม่สามารถใช้งานกับ PHP-CGI ได้ด้วย PHP-FPM มีวิธีง่าย ๆ ในการติดตั้งบน Ubuntu โดยใช้ตัวจัดการแพคเกจ? คุณแนะนำให้อ่านเกี่ยวกับเรื่องนี้หรือไม่?
Alix Axel

ด้วยการเปิดใช้งาน Multiverse ฉันสามารถ "apt-get install nginx" บน lucid และทำงานเหมือนแชมป์ - ฉันใช้ในระบบการผลิต มีตัวอย่างจุดเริ่มต้นที่ดีที่นี่howtoforge.com/แต่เป็นเช่นเคย YMMV
dialt0ne

ฉันสามารถติดตั้ง nginx โดยใช้ apt แต่ฉันไม่สามารถผูกมันไว้กับล่าม PHP ลิงค์ที่คุณระบุมีแหล่งข้อมูลใหม่ที่ดูเหมือนจะให้php5-fpmแพคเกจ ฉันจะลองดู
Alix Axel

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