[Windows + fastcgi + php] Валится или перестаёт отвечать

FireFenix nginx-forum at nginx.us
Wed Apr 17 12:59:53 UTC 2013


Здраствуйте %user_name%. Я новичёк ине давно начал знакомство с nginx, и
прошу помощи:

Имеется относительно старенький дедик Dual Core AMD Opteron 2.2Ghz и 2 Gb
RAM

На котором:
* Windows Server 2003 Standart Edition SP2
* nginx 1.3.16
* php 5.4.13

На котором  получился конфиг

worker_processes  2;
worker_rlimit_nofile 163840;

events 
{
    worker_connections  81920;
}

http 
{
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  600s 600s;

    gzip  on;

    server 
    {
        listen       8080;
        server_name  localhost;

        access_log off;
        #rewrite_log on;

        merge_slashes on;

        rewrite ^/path/(.*)$ /path/index.php;

        location / 
        {
            root D:/Site;
            index  index.html index.htm index.php;
        }

        location ~ \.php$ 
        {
            root           D:/Site;
            
            fastcgi_read_timeout 600s;
            fastcgi_send_timeout 600s;

            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME
$document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }
}

Конфиг выше результирующий, вначале был дефолтный конфиг с прописанным
fastcgi

И при стандартном конфиге php-cgi.exe прибивалось на некотором запросе

Использую программку ab из Апача для теста
C:\>ab.exe -n 1000 -c 100 http://localhost:8080/index.php
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
apr_pollset_poll: The timeout specified has expired (70007)
Total of 598 requests completed

После этого php-cgi.exe улетало в космос.
Поискал в доках, и начал увеличивать worker_rlimit_nofile = 163840 и
worker_connections = 81920

Теперь картина другая, php-cgi не падает, но
* При C:\>ab.exe -n 10 -c 10 http://localhost:8080/index.php спокойно
проходит тест или при одиночных запросах из браузера
* При C:\>ab.exe -n 1000 -c 100 http://localhost:8080/index.php ложиться и
перестаёт отвечать, аналогичная картина если Ф5 зажать в браузере.

Подумал, что проблема в таймаутах, и попробовал fastcgi_read_timeout = 600 и
fastcgi_send_timeout = 600, но картина ничерта не изменилась.

Причём кроме последнего случая в лог c параметром error ничего не выпадает,
но в если включить лог debug, то в логе начинает спамить
2013/04/17 15:52:57 [debug] 3088#3300: select ready 0
2013/04/17 15:52:57 [debug] 3088#3300: timer delta: 500
2013/04/17 15:52:57 [debug] 3088#3300: posted events 00000000
2013/04/17 15:52:57 [debug] 3088#3300: worker cycle
2013/04/17 15:52:57 [debug] 3088#3300: accept mutex locked
2013/04/17 15:52:57 [debug] 3088#3300: select event: fd:156 wr:0
2013/04/17 15:52:57 [debug] 3088#3300: select timer: 500
2013/04/17 15:52:58 [debug] 212#2372: select ready 0
2013/04/17 15:52:58 [debug] 212#2372: timer delta: 500
2013/04/17 15:52:58 [debug] 212#2372: posted events 00000000
2013/04/17 15:52:58 [debug] 212#2372: worker cycle
2013/04/17 15:52:58 [debug] 212#2372: accept mutex lock failed: 0
2013/04/17 15:52:58 [debug] 212#2372: select timer: 500
даже при том, когда клиент закрыл соединение, ещё некоторое время идёт спам
лога

Так вот, товарищи знатоки, подскажите:
* Почему конфиг выше перестаёт отдавать контент? 
* И как правильно настроить конфиг для ~500 юзеров работающих одновременно,
при это которые могут слать запросы один за дргуим (т.е. не постоянно, а
некоторым блоками запросов до ~100 запросов в секунду).

Хотелось бы, чтобы контент отдавался в любом случае вне зависимости, от
скорости выполнения, но в порядке очереди запросов.

Спасибо.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,238429,238429#msg-238429



Подробная информация о списке рассылки nginx-ru