Connection timed out (php + fastcgi)

Nick S. Grechukh gns at altlinux.ru
Sun Apr 15 21:26:05 MSD 2007


2007/4/15, Alexey Polyakov:
> Ну например можно заменить fcgi на apache, предварительно исправив в
> нужном месте максимальное число воркеров, чтобы позволяло плодить
> несколько тысяч.

( мы в свое время перейдя с apache-mod_php+postgresql  на
nginx+fcgi+postgres получили увеличение в 2 раза пропускной
способности - с 2 транзакций в секунду на celeron 2.7 до 4. Это в
100mbit lan, где узким местом был вовсе не трафик к клиенту.
при этом с нгинксом сохранялась отзывчивость, а апач быстро уходил в
штопор - после прекращения запросов машина полчаса еще выбиралась из
свопа :]. )

используемый тест с sleep некорректен: при медленной отдаче PHP
благополучно завершился и готов принимать новые запросы, а нгинкс
продолжает не спеша отдавать его ответ клиенту. В вашем же случае
впустую расходуется самый ценный ресурс - процессы PHP, количество
которых ограничено PHP_FCGI_CHILDREN. Соответственно, можно сделать
PHP_FCGI_CHILDREN=10000, благо они все равно  спят, но вряд ли
результаты такого тестирования будут полезны.

Интереснее проверить такое:

<?php
$load=500000;
echo "<html><body>";
for ($i=0; $i < 5; $i++) {
        echo "$i\n<br>";
        for ($j=0; $j < $load; $j++) { $d = $i^$j; }
};
echo "</body></html>\n";
?>

здесь увеличение количества одновременно работающих процессов php
увеличивает время работы каждого из них. по вкусу подобрать $load и
дополнить слипами, гонять /usr/sbin/ab -n 20000 -c 20 -Sdk
http://localhost:8080/index.php.

или взять bench.php c
http://sebastian-bergmann.de/archives/504-PHP-5.1-Performance.html,
работающий 30 секунд на Intel(R) Celeron(R) CPU 1.70GHz.


More information about the nginx-ru mailing list