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

Валентин Бартенев vbart at nginx.com
Wed Apr 17 13:27:47 UTC 2013


On Wednesday 17 April 2013 16:59:53 FireFenix wrote:
> Здраствуйте %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
> даже при том, когда клиент закрыл соединение, ещё некоторое время идёт спам
> лога
> 
> Так вот, товарищи знатоки, подскажите:
> * Почему конфиг выше перестаёт отдавать контент?

На windows системах поддерживается не более 1024 соединений, смотрите: 
http://nginx.org/ru/docs/windows.html#known_issues

--
Валентин Бартенев
http://nginx.org/en/donation.html

> * И как правильно настроить конфиг для ~500 юзеров работающих одновременно,
> при это которые могут слать запросы один за дргуим (т.е. не постоянно, а
> некоторым блоками запросов до ~100 запросов в секунду).
> 
> Хотелось бы, чтобы контент отдавался в любом случае вне зависимости, от
> скорости выполнения, но в порядке очереди запросов.
> 
> Спасибо.







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