Я имею общее представление о выполнении PHP в различных конфигурациях как mod_php, cgi, FastCGI, и т.д.
В моих результатах и тесте я нашел, что FastCGI немного лучше. Мне нравится поддержка FastCGI SuEXEC больше всего. Ожидайте я не хочу входить в сравнительное тестирование бизнеса здесь снова. При перемещении по сети Вы найдете людей, доказывающих, что один путь быстрее, чем другой с точки зрения количества запросов, обработанных в секунду. Хорошо его хорошие метрики, но я интересуюсь различными факторами и здесь являюсь своими вопросами...
Отметьте, я меньше интересуюсь выживанием против транспортных скачков или DIGG. Я хочу путь, который может сделать сервер стабильным и предсказуемым.
Извините, если я сбиваю с толку, но я нахожусь действительно в путанице. У меня есть 512 МБ физической RAM, Подкачка 400 МБ и мой сервер исчерпывают память как сумасшедший. Среднее требование к памяти составляет приблизительно 350 МБ, это просто, скачки использования памяти делают память недоступной в течение нескольких секунд и если немного дополнительных хитов приняли в тех немногих второе окно, апач, разрушенный, в то время как mysql и все другие парни продолжают бежать прекрасный.
Помогите мне парни. Я не собираюсь покупать больше RAM или аппаратных средств. Я чертовски уверен, что проблема находится в моей конфигурации. Извините, если я звучу высокомерным или неосведомленным.
Какой метод выполнения PHP потребляет меньше памяти?
Я предполагаю, что на каждый обработанный PHP запрос они более или менее одинаковы. Но если вы также загрузили mod_php в apache, обслуживающий образы, то я предполагаю, что ваш объем памяти будет больше за счет обслуживания статических файлов.
Также какой метод потребляет память почти на постоянной основе. Я вижу, что при использовании 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 нет серьёзных ошибок, то это не должно приводить к массовому потреблению памяти.
Влияют ли на потребление памяти настройки apache MPM преформы/рабочие настройки? В равной ли степени они влияют на mod_php и FastCGI режим?
Возможно, но я рекомендую держаться подальше от рабочих, так как PHP в основном не является потокобезопасным.
Когда я запускаю команду "top", я вижу, что apache (httpd) потребляет около 40 Мб памяти. Есть много случаев выполнения httpd. Также в дополнение к этому FastCGI развивает некоторые процессы подобного размера. Каков нормальный размер памяти для процесса httpd?
30МБ - это мин. Верхний предел зависит от вашего приложения (я видел случаи, когда он составлял ~1GB)
Так как я запускаю Wordpress на всех наших сайтах, что будет хорошим способом в этом контексте?
Наверное, это дело вкуса. Недавно я перешел от apache к nginx+fastcgi. Нужно немного времени, чтобы привыкнуть, но это хорошо работает. Никаких проблем с wordpress (даже не с суперкэшем, который, скорее, связан с веб-сервером).
Работает ли FastCGI/SuExec с APC нормально? Нужно ли перенастраивать APC для работы с SuEXEC и FastCGI.
Я не использую suExec, но fastcgi хорошо работает с APC. Нет необходимости что-либо настраивать.