update : только что посмотрел на время обновления кэша длинных запросов, и они не сталкивались со временем сбоя сервера.
update2 : обнаружена причина проблемы. Рекламный сервер не работает, и сервер зависает, хотя кажется, что мы правильно установили время ожидания сокета. Есть ли способ проверить поведение тайм-аута?
У нас очень занятый сервер. ~ 3K одновременных подключений
Сервер имеет 32 ГБ оперативной памяти 2xCPU. У нас есть сервис недоступных ошибок.
Сервер не отвечает с ошибкой 500, и журнал ошибок показывает сотни / тысячи строк:
[warn] mod_fcgid: can't apply process slot for /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper
Мы думаем, что это может быть ошибка конфигурации или ошибка соединения с базой данных / запроса.
Процесс php обновляет кеш, который является очень и очень сложным результатом запроса. 3 отдельных запроса выполняются каждый два раза в день. Я включил медленный журнал запросов. Я подозреваю, что в нашем случае запрос превышает ограничение времени выполнения php 20 секунд (установлено в следующих файлах). Любая помощь приветствуется.
Мы используем модель apache worker mpm с mod_fcgid.
Вот файл fcgid.conf:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /var/lib/apache2/fcgid/sock
# Communication timeout: Default value is 20 seconds
IPCCommTimeout 20
# Connection timeout: Default value is 3 seconds
IPCConnectTimeout 3
И файл /etc/apache2/conf.d/php-fcgid.conf:
<IfModule !mod_php4.c>
# Путь к php.ini <96> по умолчанию / etc / phpX / cgi
DefaultInitEnv PHPRC = / etc / php5 / cgi
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.
# DefaultInitEnv PHP_FCGI_CHILDREN 8
# Maximum requests before a process is stopped and a new one is launched
DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1500
# Maximum number of PHP processes.
MaxProcessCount 45
# Define a new handler "php-fcgi" for ".php" files, plus the action that must follow
AddHandler php-fcgi .php
Action php-fcgi /fcgi-bin/php-fcgi-wrapper
# Define the MIME-Type for ".php" files
AddType application/x-httpd-php .php
# Define alias "/fcgi-bin/". The action above is using this value, which means that
# you could run another "php5-cgi" command by just changing this alias
Alias /fcgi-bin/ /var/www/fcgi-bin.d/php5-default/
# Turn on the fcgid-script handler for all files within the alias "/fcgi-bin/"
<Location /fcgi-bin/>
SetHandler fcgid-script
Options +ExecCGI
</Location>
Apache2 рабочий mpm config:
<IfModule mpm_worker_module>
StartServers 10
MaxClients 2048
ServerLimit 2048
MinSpareThreads 30
MaxSpareThreads 100
ThreadsPerChild 64
ThreadLimit 100
MaxRequestsPerChild 5000
Мы посмотрели инструкции на этой веб-странице и загрузили конфигурацию сервера:
http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html
update : просто посмотрел на время обновления кэша длинных запросов, и они не сталкивались со временем сбоя сервера.
update2 : обнаружена причина проблемы. Рекламный сервер не работает, и сервер зависает, хотя кажется, что мы правильно установили время ожидания сокета. Есть ли способ проверить поведение тайм-аута?