Originally Posted by
4got2you
Добрый вечер!
Огромное спасибо создателю скрипта. Почитал, запустил и доволен
Есть только вопрос по поводу 10-и постоянно работающих процессов "php-fcgi", памяти они сжирают прилично. Зачем столько? Как уменьшить их количество? (установлены только Transmission и vnStat) Поиском по форуму пользовался, нашел такой же вопрос, но он остался без ответа.
Я вот не поленился и порыскал в интернете.
Проблемма эта достаточно сложная.
В краце для себя я понял так:
fastphp, который применяется на маршрутизаторе, пытается выйграть в производительности и ресурсах, выполняя обработку сразу по несколько запросов в одном процессе (в отличае от php обработчика, который при обработке каждого запросе запускает новый процесс и закрывает дабы избежать сложного кода и багов).
Всебы хорошо, но обработчик fastphp настолько глюкавый, что разработчики идут на следующие меры:
1. в одном процессе обновременно обрабатывают не больше заданного числа запросов,
2. процессы периодический перезапускаются, чтобы сбросить накопленные баги в памяти.
А вот несколько процессов запускается потому, что:
1. пока один из процессов перезагружается, другие должны обрабатывать запросы
2. предварительный запуск процессов экономит время на запуск процессов, когда уже нужно обработать запрос.
Данный вопрос баланса ресурсов, производительности и надежности не до конца проанализирован самими разработчиками и на прямую зависит от работы самого http сервера (lighttpd), который от версии к версии по разному запускает свои процессы, включая модули fastphp. Ну и от железа тоже зависит и собственно от интенсивности запросов.
Есть некоторые рекомендации от разработчиков fastphp, гуглите.
Для правильной настройки нужно ставить плагины для сбора нагрузки запросов php и занимаемых ресурсов, и уже потом на основании всех данных настраивать для себя.
Я настроил для себя по минимуму (web сайта и общего доступа к маршрутизатору у меня нет):
Максимум 2 процесса, минимум 1. Второй запускать при нагрузке больше 4 на первый процесс (по идее в начале должы стартовать оба, а второй отвалится через какоето дефолтное время по ненадобности). После обработки 1000 запросов перезагружать процесс (второй в этот момент должен взять обработку на себя)
Code:
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fcgi.sock",
"bin-path" => "/opt/bin/php-fcgi",
"min-procs" => 1,
"max-procs" => 2,
"max-load-per-proc" => 4,
"bin-environment" => (
"PHP_FCGI_MAX_REQUESTS" => "1000"
)
)
)
)
К чему это приведет я не знаю. Темболее задачи у всех разные, у когото только rtorrent php использует, а у когото web сайт на php или еще что потяжелее, настройки уже должны быть другими.