Apache MPM - 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. У FAQ часто викладається причина, чому:

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

Чому я не повинен використовувати Apache2 з потоковим MPM у виробничих умовах?

PHP - це клей. Це клей, який використовується для створення класних веб-додатків, з’єднуючи десятки сторонніх бібліотек разом і змушуючи це виглядати як одне цілісне утворення через інтуїтивний та простий у вивченні мовний інтерфейс. Гнучкість та потужність PHP залежить від стабільності та надійності основної платформи. Для склеювання потрібні робоча ОС, робочий веб-сервер та робочі сторонні бібліотеки. Коли будь-який із цих припиняє роботу, PHP потребує способів виявити проблеми та швидко їх усунути. Коли ви робите базовий фреймворк складнішим, не маючи повністю окремих потоків виконання, повністю відокремлених сегментів пам’яті та потужної пісочниці для кожного запиту для відтворення, в систему PHP вводяться подальші слабкі місця.

nginx + php-fpm - це також відмінний спосіб запуску php-додатків. nginx має вбудовану підтримку FastCGI, а php-fpm - один з найкращих способів запуску php у середовищі FastCGI. Дивіться документацію на php тут:

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


Щодо МПМ Apache, я думаю, що це я отримав, префорк - це шлях. Я схильний до налаштування nginx або lighttpd через велику витрату пам'яті Apache. Lighttpd і PHP-FCGI працює з коробки при установці з придатністю, однак я не впевнений, чи протікає пам'ять, про яку все продовжують говорити ще в 06/07. Я також читав, що Nginx має менший рівень використання процесора, але я не можу змусити його працювати з PHP-CGI, не кажучи вже про PHP-FPM. Чи є простий спосіб встановити це на Ubuntu за допомогою менеджера пакунків? Чи рекомендуєте ви будь-яке читання на цю тему?
Алікс Аксель

При включенні мультиварки мені вдалося "вдало-встановити встановити nginx" на lucid, і це працює, як шампион - я використовую у виробничих системах. Тут є хороший приклад відправного пункту, howtoforge.com/…, але, як завжди, YMMV.
dialt0ne

Я можу встановити nginx за допомогою apt, але мені не вдається зв’язати його з інтерпретатором PHP. Надане вами посилання має нове джерело, яке, здається, надає php5-fpmпакет. Я спробую це спробувати.
Алікс Аксель

Це посилання може бути кращим howtoforge.com/… Я використовую репо brianmercer для своїх виробничих систем для php5-fpm.
dialt0ne
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.