Подруга купила скрипты интернет-магазина на
www.phpshop.ru. Поначалу поставили их на shared-хостинг vexxhost.com — работало идеально, потом там перенастроили сервер и все упало, поддержка не отвечала неделю — купили такой же shared-хостинг у hostgator.com. Перенесли скрипты туда — начались периодические ошибки Internal Server Error 500 из-за превышения количества одновременно запущенных процессов (25). При этом к магазину обращаются только с одного, максимум — двух компьютеров. То есть, о перегрузке речи не идет.
Когда смотрю список процессов — вижу в нем по несколько штук с одними и теми же php-файлами в командной строке. Через минуту-другую эта куча убивается, и снова все какое-то время работает нормально.
В инете вычитал, что 25 процессов должно быть более чем достаточно для среднего сайта, и у некоторых shared-хостингов оно вообще 10-20, и ничего.
Тамошняя поддержка на мой вопрос, кто ответственен за размножение процессов, заявляет, что это делают сами скрипты, а Apache, PHP и MySQL тут ни при чем. Я в PHP полный нуль, поискал в скриптах "fork" и "spawn" — такого нигде нет. MySQL-база используется только одна. PHP работает в режиме FastCGI. Вот
конфигурация PHP на сервере.
Процессы действительно создаются исключительно по воле скриптов, или таки их создают Apache, PHP или MySQL? Если второе — как можно ограничить количество процессов, порождаемых для обработки? Магазин пока совершенно не раскручен, брать под него сразу выделенный хостинг не хочется — пусть бы работал чуть медленнее, лишь бы не давал отказов. Перерыл кучу обсуждений по этим вопросам, но внятного ответа так и не нашел.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Каспер, Вы писали:
К>Ограничение количества FastCGI процессов поддается настройке
Она доступна пользователю, или настраивается сразу для всей системы в рутовых конфигах?
К>Насколько мне известно, на большинстве shared-хостингов такой вопрос не стоит, потому что php работает как модуль апача libphp5.so, без всяких CGI/FastCGI. А PHP через FastCGI используют в основном с неапач-серверами – lighthttpd, nginx, IIS.
Смотрел несколько буржуйских shared-хостингов — везде HTTP-сервером трудится апач, но PHP работает через FastCGI, хотя в форумах встречались упоминания и таких, где он подключен к апачу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ> Перенесли скрипты туда — начались периодические ошибки Internal Server Error 500 из-за превышения количества одновременно запущенных процессов (25). При этом к магазину обращаются только с одного, максимум — двух компьютеров. То есть, о перегрузке речи не идет.
Логи есть? Можно взглянуть (ошибок и access) за пару подобных случаев?
ЕМ> Когда смотрю список процессов — вижу в нем по несколько штук с одними и теми же php-файлами в командной строке. Через минуту-другую эта куча убивается, и снова все какое-то время работает нормально.
Если voobrazilia.com и есть тот самый магазин, то там флеш-ролик раз в секунду (и чаще) что-то подсасывает с сервера, а судя по тому, что статику отдает апач — это и есть +2 лишних запроса, которые, возможно, и порождают кучу процессов (там еще возможно ограничение на скорость отдачи, что только усугубляет).
ЕМ> Процессы действительно создаются исключительно по воле скриптов, или таки их создают Apache, PHP или MySQL? Если второе — как можно ограничить количество процессов, порождаемых для обработки? Магазин пока совершенно не раскручен, брать под него сразу выделенный хостинг не хочется — пусть бы работал чуть медленнее, лишь бы не давал отказов. Перерыл кучу обсуждений по этим вопросам, но внятного ответа так и не нашел.
Если магазин на базе открытых скриптов и не использует ZendOptimizer (исходники не шифрованы), то можешь стукнуть по мылу в профиле — у меня есть сервер, можем поднять тестовую версию на нем и хорошо покататься по ней танком в плане производительности и прочего.