Andre_487
@Andre_487
Разработчик веб-сервисов

PHP-FPM на рабочем сервере под Debian 6?

Существует сервер под Debian 6, который не должен надолго упасть. На нем есть nginx и php-cgi, запущенный через start-stop-daemon, таким образом создан FastCGI.



Но когда появился большой трафик (примерно 2-3 000 одновременных соединений), появилась проблема ошибки 502, которая возникает даже не смотря на небольшую нагрузку на процессор и память.



Изученный материал подсказал, что PHP-FPM гораздо лучше справляется с задачей, но как его поставить, чтобы не нарушить существующую экосистему?



Известно, что он есть на dotdeb.org, но его я применять опасаюсь из-за проблем с несовместимостью пакетов — при попытке поставить что-нибудь для PHP он выдает запрос на удаление важных вещей.



Можно ли как-то по-другому установить php5-fpm на Debian 6?



UPD, 2012-05-06. Было много сделано для решения этой проблемы. Сейчас php5-fpm установлен, процент ошибки 502 близок к нулю, в комментариях можно посмотреть пути решения проблемы.



Дополнительно можно сказать, что можно установить php5-fpm и новую версию nginx из репозиториев unstable и testing:

#UNSTABLE
deb http://ftp.ru.debian.org/debian/ unstable main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ unstable main non-free contrib

#TESTING
deb http://ftp.ru.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ testing main non-free contrib




Чтобы исключить ошибку 502, нужно подобрать оптимальные параметры php5-fpm и оптимизировать приложение. К примеру, в моем и еще одном случае помогло исключение сессий или переопределение стандартного механизма с исключением записи их в файлы.



Также PHP 5.4 работает заметно быстрее, и php5-fpm справляется с помощью меньшего количества процессов.
  • Вопрос задан
  • 11932 просмотра
Решения вопроса 1
ajaxtelamonid
@ajaxtelamonid
Laravel
Правильно делаете, что не доверяете dotdeb.org. Я лично ничего больше от них ставить не буду, был негативный опыт, причем два раза.

Поставить php-fpm можно вот таким способом: www.zagirov.name/debian-testing-install-php5-fpm
Т.е. по сути этот пакет одинаков для любого php 5.3. Достаточно просто убить внутри пакета зависимость от версии и можно ставить. Я это проделал у себя, все работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Andre_487
@Andre_487 Автор вопроса
Разработчик веб-сервисов
И уже минус в карму. Неужели такой плохой вопрос? Ведь это действительно может помочь и мне и другим людям с подобной проблемой.
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
>Но когда появился большой трафик (примерно 2-3 000 одновременных соединений),
>появилась проблема ошибки 502

php-fpm это не серебряная пуля которая решить данную проблему. Очевидно же, что суть проблем в том, что бэкэнд не успевает переварить такой всплеск нагрузки. Как я понял, при это есть свободные ресурсы, значит нужно крутить настройки сервера.

Увеличте backlog бэкэнда, запросы которые он не сможет принять буду ставиться в очередь. Но увлекаться этим не стоит, пользователь не будет у вас ждать, пока его запрос из backlog будет бэкэндом взят и обработан. Значит смотрите в сторону ускорения приложения. Сколько времени генериться страница? Если ли страницы которые одинаковы для всех? Выносите их в memcached и забирайте самим nginx-ом, не дергайте лишних раз бэкэнд. Включены ли акселераторы в духе XCache? Все ли скрипты при этом в кэше? Как обстоят дела с соединения к базе, сколько по времени они занимаются? Используется ли кэширование на этом уровне? К примеру, у меня в случае забора ответа от СУБД страница в среднем на одном проекте генерится ~15-20 мс, если данные забираются из кэша в роли которого работает Redis, то величина падает до ~2-10 мс, т.е. до 10 раз. И бэкэнд готов обрабатывать следующий запрос.

В общем обращаю внимание, что установка php-fpm чудесным образом ситуацию может не изменить, хотя возможно сгладит её.
Ответ написан
@NiGHt_LEshiY
Если вы контроллируете обстановку, можно собрать и поставить php-fpm самому. Желательно адекватным способом, а не make install. (то есть собрать deb-пакет и дать менеджеру пакетов самому поставить его)
Ответ написан
@odmin4eg
а чем плох dotdeb? у меня и в убунте и в дебианах разных работает хорошо.
впритом на реальном боевом проекте с 5000-6000 в сутки пользователями, в онлайне правда не как у ТС но всёж.
сервачок купил на ебее за 100 баксов 3 года назад.

тоже валился от нагрузки, настроил кэширование на nginx (это уже после всяких мемкэшедов, еАццелераторов, и прочих штук кэширующих мускул запросы)
Ответ написан
rakot
@rakot
Может, это не ваш случай, но после 700 конкурентных запросов, у меня на сервере тоже происходил затык.
Дело было в в создании файлов сессий на диск, после переноса сессий в редис от этого избавился.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы