Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Причина, по которой mod_php менее эффективен, чем fastcgi php(php-fpm)

Автор вопроса: Je RogОтветов: 1

Я вижу, что большинство ответов считают, что mod_php менее эффективен, потому что объем памяти будет больше из-за обслуживания статических файлов, таких как этот.

Но у меня другое мнение, а именно следующее:

На самом деле разделы кода совместно используются процессами fork()ed, поэтому предикат объема памяти не должен выполняться.

Единственная причина, по которой я могу думать, заключается в том, что mod_php не является потокобезопасным, поэтому веб-сервер может создавать подпроцессы только для каждого запроса.

В то время как в режиме fastcgi веб-сервер может повысить производительность за счет трюков с мультиплексированием, тем самым уменьшая fork() накладные расходы.

Одним словом, недостатком mod_php является не его объем памяти, а накладные расходы fork(), но если mod_php может быть потокобезопасным, fork() не понадобится, и это будет наиболее эффективное решение для обслуживания запросов.

Вышесказанное является моим мнением, но не уверенным на 100%.

Это правильно?

fastcgiwebservermod-php

Ответы

Ответ 1 · рейтинг 2 · Evert

Разветвление происходит довольно быстро, и установки apache + mod_php по умолчанию также разветвляются. (если не используется рабочий mpm).

Настоящая причина (отчасти) в следующем:

Стандартный mod_php будет иметь достаточно большой процесс, потому что процесс содержит как php, так и все остальные модули apache и т. д. Если php находится в отдельном процессе, процесс php может иметь более короткое время жизни и быстро передать результат обратно в apache, когда PHP будет выполнен.

Другая причина (как вы упомянули) заключается в том, что PHP не затрагивается для запросов, отличных от php.

Тот факт, что вы можете переключиться на рабочий mpm при использовании FastCGI, является просто бонусом; но повышает эффективность.

В общем, с этими типами проектов вы всегда должны стараться сделать как процессы apache, так и php как можно более недолговечными, и их разделение помогает.

Но да... вилки очень быстрые, и в некоторых проектах они могут работать лучше, чем потоки в Linux (без источника, я просто помню, как читал это). Я считаю, что для систем типа веб-сервера системы на основе шаблона Reactor работают даже лучше. NGinx и Varnish - яркие тому примеры.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы