nginx + php-cgi - не держат нагрузку

Андрей deepmindster at gmail.com
Thu Oct 2 11:29:40 MSD 2008


Здравствуйте.

У меня очень похожая проблема. Может быть даже та же самая.
Замечено следующее:
Иногда вместо ответа получаю gateway timeout от nginx причём жду его по 
две минуты (в это время браузер в состоянии "ожидание ответа"). Если в 
это же время открыть вкладку в браузере и тот же набрать адрес, то 
страница открывается без проблем. Складывается ощущение что php 
"зависает" во время обработки страницы. Это не зависит от того, что за 
страница. Иногда это случается с индексной страницей, иногда с другими. 
Для решения проблемы запустил несколько fcgi-процессов на разных портах 
и поставил timeout 5 секунд. Количество показов gateway timeout 
значительно снизилось, однако, тем не менее время от  времени 
появляется. Больше ничего не ясно. Пока решил попробовать апач вместо 
fcgi, если проблема уйдёт, останусь на апаче.

Arceny, а в чём у Вас причина перехода на fcgi?

Андрей.

Arceny пишет:
> Здравствуйте.
>
> Имеется nginx/0.5.35 и за ним apache бекендом на достаточно
> высоконагруженом сервере. Захотели перейти на fcgi.
>
> Система Debian 4.0 + backports,  поставили php-fcgi из бекпортов,
> работает со следующим /etc/default/php-fastcgi:
>
> EXEC_AS_USER=www-data
> FCGI_HOST=localhost
> FCGI_PORT=9000
> PHP_FCGI_CHILDREN=6
> PHP_FCGI_MAX_REQUESTS=1000
>
> при работе соответственно висят 6 процессов типа
> 31572 ?        Ss     0:00 /usr/bin/php-cgi -q -b localhost:9000
>
> Конфигурация nginx:
>
> user www-data;
> worker_processes  8;
> error_log  /dev/null;
> pid        /var/run/nginx.pid;
> events {
>     worker_connections  4096;
> }
> http {
>     include       /etc/nginx/mime.types;
>     default_type  application/octet-stream;
>     sendfile        on;
>     keepalive_timeout  65;
>     tcp_nodelay        on;
>     client_max_body_size 10m;
>     gzip  on;
>     gzip_comp_level 3;
>     gzip_proxied any;
>     include /etc/nginx/sites-enabled/default;
> }
>
> Часть конфига, отвечающая за мой виртуалхост с пробросом на fcgi:
>
> server {
>  listen  10.196.0.18:80;
>  server_name torrent.b-metro.net www.torrent.b-metro.net;
>  access_log off;
>  index index.html index.php;
>
>  location ~ (\.php(/.+)?$|^/$) {
>    fastcgi_pass 127.0.0.1:9000;
>    fastcgi_index   index.php;
>    include /etc/nginx/fastcgi_params;
>  }
> location ~* \.(jpg|jpeg|png|gif|htm|html|js|txt|css|mp3|rar|bmp|zip|bz2|
> gz)$ { root /home/torrent/www/;
>   autoindex on;
>   }
> }
>
> ОПИСАНИЕ ПРОБЛЕМЫ:
> получаю ошибку 504 gateway timeout, при этом глядя в top вижу, что
> нагрузки на php-cgi нету, на mysql нету, ни на что нету. При этом
> сайты, для которых бекендом остался апач прекрасно отдаются, то есть
> проблема в php-cgi явно. Не подскажете куда копать?
>
> P.S. Если нужно ещё /etc/nginx/fastcgi_params (дефалтный)
>
> fastcgi_param  QUERY_STRING       $query_string;
> fastcgi_param  REQUEST_METHOD     $request_method;
> fastcgi_param  CONTENT_TYPE       $content_type;
> fastcgi_param  CONTENT_LENGTH     $content_length;
>
> fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
> fastcgi_param  REQUEST_URI        $request_uri;
> fastcgi_param  DOCUMENT_URI       $document_uri;
> fastcgi_param  DOCUMENT_ROOT      $document_root;
> fastcgi_param  SERVER_PROTOCOL    $server_protocol;
>
> fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
> fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
>
> fastcgi_param  REMOTE_ADDR        $remote_addr;
> fastcgi_param  REMOTE_PORT        $remote_port;
> fastcgi_param  SERVER_ADDR        $server_addr;
> fastcgi_param  SERVER_PORT        $server_port;
> fastcgi_param  SERVER_NAME        $server_name;
>
> # PHP only, required if PHP was built with --enable-force-cgi-redirect
> fastcgi_param  REDIRECT_STATUS    200;
>
>   






More information about the nginx-ru mailing list