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