У моего сайта блога Wordpress обычно 200 пользователей в минуту, но при нагрузке менее 1000 пользователей в минуту мой сайт становится очень медленным, и это предупреждение появляется в моем error_log.
[Sun Aug 17 16:44:41 2014] [warn] [client **.***.**.***] mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
Иногда эти два также сопровождают предупреждение:
[Sun Aug 17 16:44:41 2014] [warn] [client ***.***.***.**] mod_fcgid: read data timeout in 45 seconds
[Sun Aug 17 16:44:41 2014] [error] [client ***.***.**.**] Premature end of script headers: index.php
Я проверил состояние сервера, уровень ЦП, памяти и нагрузки ниже 30%.
Информация о сервере:
CPU GenuineIntel, Intel(R) Xeon(R)CPU L5630 @ 2.13GHz
Version Parallels Plesk Panel v11.5.30_build115130819.13 os_CentOS 5
OS CentOS 5.5 (Final)
Memory 5.89 GB
Prefork.c:
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 3
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 4000
</IfModule>
Fcgid.conf
FcgidIdleTimeout 40
FcgidProcessLifeTime 30
FcgidMaxProcesses 20
FcgidMaxProcessesPerClass 8
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 30
FcgidIOTimeout 45
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 10
В чем может быть причина этого предупреждения и как его исправить?
Ты видел http://www.cloudlinux.com/blog/clnews/perfecting-fastcgi-settings-for-shared-hosting.php?
FcgidMaxProcesses - это общее количество процессов, которые FCGID запустит для всех пользователей. Это предотвратит проблемы с OOM. Чем больше у вас ОЗУ, тем выше вы можете установить значение. Если вы установите это значение слишком низким, вы получите 500 ошибок, поскольку FCGID не сможет создавать новые процессы для обслуживания запросов. Это значение также зависит от размера процессов PHP (который, в свою очередь, зависит от расширений, которые вы включили для PHP), поскольку чем крупнее процесс, тем быстрее вы его OOM. Вы можете попробовать поиграть со следующими числами в зависимости от вашей оперативной памяти: 8 ГБ - около 150, 16 ГБ - 300 Кроме того, обязательно следите за журналами ошибок apache. Если вы видите «не удается применить слот процесса для ошибки» - это означает, что вы нажимаете FcgidMaxProcesses.
Попробуйте увеличить FcgidMaxProcesses до 150