Apache mod_php ИЛИ FastCGI? Что хорошо для Wordpress? - PullRequest
18 голосов
/ 10 сентября 2009

У меня есть общее представление о запуске PHP в различных конфигурациях, таких как mod_php, cgi, FastCGI и т. Д.

В своих выводах и тестах я обнаружил, что FastCGI немного лучше. Мне больше всего нравится поддержка FastEXI для SuEXEC. Подождите, я не хочу снова начинать бенчмаркинг. Если вы просматриваете веб-страницы, вы обнаружите, что люди доказывают, что один способ быстрее, чем другой, с точки зрения количества запросов, обрабатываемых в секунду. Ну, это хорошие показатели, но меня интересуют разные факторы, и вот мои вопросы ...

  1. Какой метод запуска PHP потребляет меньше памяти?
  2. Также, какой метод потребляет память почти постоянно. Я вижу, что mod_php использует память моего сервера в интервале от 300 до 800 МБ каждые несколько секунд.
  3. Но с FastCGI первый ответ от сервера приходит очень поздно. Я вижу, что с FastCGI существует начальная задержка на запрос веб-страницы. Как только приходит первый ответ от сервера, другие элементы, такие как images, css, js загружаются довольно быстро.
  4. Это нормально, чтобы запустить смесь обоих? У меня 5 сайтов на выделенном сервере. Это нормально, если я запускаю несколько с mod_php и отдыхаю с FastCGI?
  5. Я уверен, что мой сервер выходит из строя в основном из-за неправильного использования памяти mod_php. Я проверил все скрипты. Есть ли способ убедиться, что потребление памяти на сервере остается почти постоянным?
  6. Влияет ли сложность .htaccess на использование памяти? Если да, может ли это быть единственной причиной, по которой серверу не хватает памяти?
  7. Влияет ли настройка prefork / worker apache MPM на потребление памяти? Они одинаково влияют на режимы mod_php и FastCGI?
  8. Когда я запускаю команду "top", я вижу, что apache (httpd) использует память около 40 МБ. Есть много примеров запуска httpd. Кроме того, FastCGI разветвляет некоторые процессы аналогичного размера. Какой нормальный объем памяти для процесса httpd?
  9. Поскольку я использую Wordpress на всех наших сайтах, что будет хорошим способом в этом контексте?
  10. FastCGI / SuExec работает нормально с APC? Нужно ли переконфигурировать APC для работы с SuEXEC и FastCGI.

Обратите внимание, я менее заинтересован в том, чтобы выжить против DIGG или всплесков трафика. Я хочу способ, который может сделать сервер стабильным и предсказуемым.

Извините, если я запутался, но я действительно в беспорядке. У меня 512 МБ физической оперативной памяти, 400 МБ подкачки, и моему серверу не хватает памяти, как сумасшедшему. Среднее требование к памяти составляет около 350 МБ, просто скачки использования памяти делают память недоступной на несколько секунд, и если в эти несколько секунд поступает несколько лишних попаданий, apache аварийно завершает работу, в то время как mysql и все остальные блоки работают нормально.

Пожалуйста, помогите мне, ребята. Я не собираюсь покупать больше оперативной памяти или оборудования. Я чертовски уверен, что проблема в моей конфигурации. Извините, если я звучу высокомерно или невежественно.

Ответы [ 2 ]

19 голосов
/ 22 декабря 2009

Какой метод запуска PHP потребляет меньше памяти?

Я предполагаю, что для каждого обработанного PHP запроса они более или менее совпадают. Но если у вас также есть mod_php, загруженный в apache, обслуживающий изображения, то я предполагаю, что ваш объем памяти будет выше из-за обслуживания статических файлов.

Также, какой метод потребляет память почти постоянно. Я вижу, что mod_php использует память моего сервера в интервале от 300 до 800 МБ каждые несколько секунд.

Вы можете сделать оба довольно постоянными. Если вы тщательно установите MaxClients, MinSpareServers и MaxSpareServers, вы в значительной степени сможете определить, сколько запущено процессов. Если вы также установили memory_limit в своей конфигурации PHP, вы можете рассчитать, сколько памяти вам нужно. Вы можете сделать то же самое для fcgi, так как вы можете решить, сколько процессов запущено.

Но с FastCGI первый ответ от сервера приходит очень поздно. Я вижу, что с FastCGI существует начальная задержка на запрос веб-страницы. После получения первого ответа от сервера другие элементы, такие как images, css, js загружаются довольно быстро.

Это не имеет смысла. Я не уверен, почему это происходит в вашем случае.

Это нормально, чтобы запустить смесь обоих? У меня 5 сайтов на выделенном сервере. Это нормально, если я запускаю несколько с mod_php и отдыхаю с FastCGI?

Полагаю, что обслуживать это будет и кошмар, и, вероятно, будет сложнее настроить для экономии памяти Наоборот, я верю.

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

Сконфигурируйте память и процессы, как я описал выше, и продолжайте мониторинг.

Влияет ли сложность .htaccess на использование памяти? Если да, может ли это быть единственной причиной нехватки памяти на сервере?

Я так не думаю. .htaccess для каждого каталога может замедлить работу, но если в Apache не возникнет серьезная ошибка, это не должно вызвать массовое потребление памяти.

Влияет ли настройка prefork / worker apache MPM на потребление памяти? Они одинаково влияют на режимы mod_php и FastCGI?

Возможно, но я рекомендую держаться подальше от работника, так как PHP в большинстве случаев не безопасен для потоков.

Когда я запускаю команду "top", я вижу, что apache (httpd) использует память около 40 МБ. Есть много примеров запуска httpd. Кроме того, FastCGI разветвляет некоторые процессы аналогичного размера. Какой нормальный объем памяти для процесса httpd?

30 МБ - мин. Верхний предел зависит от вашего приложения (я видел случаи, когда оно было ~ 1 ГБ)

Поскольку я использую Wordpress на всех наших сайтах, что будет хорошим способом в этом контексте?

Это, наверное, дело вкуса. Я недавно перешел от apache к nginx + fastcgi. Требуется немного времени, чтобы привыкнуть, но это работает хорошо. Никаких проблем с WordPress (даже не с Supercache, который, скорее, связан с веб-сервером).

FastCGI / SuExec работает нормально с APC? Нужно ли переконфигурировать APC для работы с SuEXEC и FastCGI.

Я не использую suExec, но fastcgi хорошо работает с APC. Не нужно ничего настраивать.

3 голосов
/ 16 декабря 2011

Пробовал переключиться на mod_php , много претензий по поводу его скорости. Не осознавал, mod_php прожигает лишнюю память при обработке статических файлов. (меня не особо волновала проблема безопасности с файлами, владеющими корнем).

Без настройки CDN, fastcgi - ваш выбор для обслуживания приложений PHP. Без него переключение с fcgi на mod_php замедлило время создания моей страницы, с 3895 мс до 6264 мс (страницы администратора на виртуальном хостинге).

...