Причина, по которой mod_php менее эффективен, чем fastcgi php(php-fpm)
Я вижу, что большинство ответов считают, что mod_php менее эффективен, потому что объем памяти будет выше из-за обслуживания статических файлов, таких как этот.
Но у меня другое мнение:
На самом деле, раздел кода разделен между fork()
процессы, поэтому предикат следа памяти не должен храниться.
Единственная причина, по которой я могу думать, состоит в том, что mod_php
не является потокобезопасным, поэтому веб-сервер может создавать подпроцессы только для каждого запроса.
В то время как в режиме fastcgi веб-сервер может повысить производительность за счет мультиплексирования трюков, тем самым уменьшая fork()
накладные расходы.
Одним словом, недостатком mod_php является не отпечаток памяти, а накладные расходы fork()
,но если mod_php
может быть thread_safe,fork()
не будет необходимости, и это будет наиболее эффективным решением для обслуживания запросов.
Выше мое мнение, но не уверен на 100%.
Это правильно?
1 ответ
Forking довольно быстр, и установки по умолчанию apache + mod_php также являются fork. (если не используется рабочий mpm).
Настоящая причина (вид) в следующем:
Стандартный mod_php будет иметь достаточно большой процесс, поскольку этот процесс содержит как php, так и все другие модули apache и т. Д. Если php находится в отдельном процессе, процесс php может иметь более короткое время жизни и быстро передавать результат обратно в apache, когда PHP готов.
Другая причина (как вы уже упоминали) заключается в том, что PHP не затрагивается для запросов не php.
Тот факт, что вы можете переключиться на рабочий mpm при использовании FastCGI, просто бонус; но увеличивает эффективность.
В общем, с этими типами проектов вы всегда должны стараться сделать процессы apache и php максимально короткими, и их разделение помогает.
Но да... форки очень быстрые, и в некоторых проектах они могут работать лучше, чем Threads в Linux (нет источника, я просто помню, как читал это). Я считаю, что для систем типа веб-серверов системы на основе шаблонов Reactor работают еще лучше. NGinx и Varnish являются яркими примерами этого.