При загрузке страницы выполняется быстрое начальное соединение, затем она зависает примерно за 10 секунд до отображения страницы. Когда нагрузка на сервер увеличивается, я начинаю смотреть сверху и вижу, что оба процессора время от времени привязываются к 100% между 4-8 процессами php-cgi. Моя теория заключается в том, что, поскольку я никогда не видел, чтобы использование ОЗУ никогда не превышало 50%, этот apache может обрабатывать поступающие запросы, но ставит их в очередь для обработки PHP. Что не так с моей конфигурацией mod_fcgid / php?
RHEL 5.4
2 процессора Xeon E5420s с частотой 2,50 ГГц
4 Гб оперативной памяти
Apache 2.2.3
Тайм-аут 30
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 5
<IfModule worker.c>
StartServers 2
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
mod_fcgid 2.2.10
LoadModule модули fcgid_module / mod_fcgid.so
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl php
</IfModule>
SocketPath run / mod_fcgid
SharememPath run / mod_fcgid / fcgid_shm
DefaultInitEnv PHPRC "/ etc /"
FCGIWrapper / usr / bin / php-cgi .php
MaxRequestsPerProcess 1500
MaxProcessCount 20
IPCCommTimeout 240
IdleTimeout 240
APC 3.0.19
extension = apc.so
apc.enabled = 1
apc.shm_segments = 1
apc.optimization = 0
apc.shm_size = 32
apc.ttl = 7200
Кэш APC используется на 43% с вероятностью попадания 99%
Пара вещей, которые я бы проверил с места в карьер ...
Во-первых, есть ли у вас что-нибудь, что печатается в журналах ошибок Apache? Возможно, вам потребуется повысить уровень журнала до «предупреждения», чтобы увидеть выходные данные ваших процессов CGI. Хотя в этом случае перенос его на отладку может быть более полезным, так как apache будет распечатывать информацию журнала, связанную с fcgi. Проверка журналов доступа также может быть полезна, чтобы узнать, возвращает ли apache код 403 или 500.
Во-вторых, какой PHP-код вы пытаетесь выполнить и как вы его тестируете? Хотя я ожидал увидеть больше процессов cgi, в этом плане может быть что-то интересное. Вы собираетесь использовать тяжелый скрипт или что-то простое, например, phpinfo (); ?
Какая версия PHP у вас установлена? Ваше ядро 32 или 64 битное?
Если да - смотрите: http://www.theregister.co.uk/2011/01/04/weird_php_dos_vuln/
У вас настроен какой-либо другой ускоритель (оптимизатор zend, eAccelerator и т. Д.) В дополнение к APC? У меня было что-то подобное, когда были включены APC cache и zend optimizer. Видимо они конфликтуют друг с другом.