Apache mod_php ИЛИ FastCGI? Что хорошо для Wordpress?

18

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

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

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

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

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

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

  • 0
    Поскольку вы, кажется, действительно обеспокоены использованием памяти, рассматривали ли вы использование сервера, отличного от Apache (nginx / lighttpd)?
  • 0
    @Jimyi - меня беспокоит память, но я не уверен, что WordPress и его тонны плагинов будут работать с другими серверами. Мне нужен мод-переписать Apache все время. Также, кто знает, какой мод Apache мне понадобится в будущем, так как у Apache их много.
Теги:
fastcgi
mod-php

2 ответа

19
Лучший ответ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 2
    @yhager Спасибо за подробный ответ. Я также переместил нашу сеть блогов с высоким трафиком на nginx + fastcgi + wp-supercache. Есть ли способ добавить APC в nginx + fastcgi + wp-supercache? Также это улучшит производительность дальше?
  • 2
    просто установите APC и перезапустите PHP. И, да, это немного повысит производительность
3

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

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

  • 1
    извините, но только в исключительных случаях mod_php будет работать лучше, чем fastcgi / fcgi
  • 1
    В моих обстоятельствах fastcgi был почти в два раза быстрее (1.6x). Из того, что я мог сказать, это из-за моих статических файлов. Дайте мне знать, если это неверное предположение.
Показать ещё 3 комментария
Сообщество Overcoder
Наверх
Меню