Задержка ответа в связке nginx + PHP FastCGI

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
Mirror
Сообщения: 74

Задержка ответа в связке nginx + PHP FastCGI

Сообщение Mirror »

Столкнулся с такой проблемой. В клиентском приложении ответ задерживается где-то на 2-5 секунд.

Сервер реализован на Debian 6, nginx 0.7.67, PHP CGI 5.3.3. PHP как FastCGI - это php-cgi, запущенный с помощью start-stop-daemon.

На сервере ведется профилирование в случайные моменты времени, его результаты показывают, что приложение отрабатывает за несколько миллисекунд. При отдаче статических файлов nginx'ом небольшая задержка есть, но очень небольшая. Возможно, я вижу ее исключительно потому, что уже нервничаю по поводу предыдущего явления. Дальше отдача статического файла идет со скоростью где-то 500 Кб/с. При том, что ответы приложения обычно меньше 1 Кб, а клиентов для этого сервера пока не наберется и пяти, вряд ли дело в загруженности канала.

Конфиги такие:
nginx.conf

Код: Выделить всё

user www-data;
worker_processes  4;
timer_resolution 100ms;
worker_rlimit_nofile 8192;
worker_priority -5;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nodelay        on;

    gzip  off;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    client_max_body_size 8M;
    server_tokens off;
}


/etc/nginx/sites-avaible/main

Код: Выделить всё

server {

        listen   80; ## listen for ipv4

        server_name  example.com;

        access_log  /var/www/log/access.log;
        error_log  /var/www/log/error.log;

        root   /var/www;
        index  index.html index.htm index.php;

        location / {
                gzip_static on;
        }

        location /system/ {
                auth_basic "Auth";
                auth_basic_user_file /etc/nginx/passwords/var_www_system;
        }

        location /log/ {
                deny all;
        }

        location ~ /system/.*\.php$ {
                try_files $uri =404;
                include php_location;
                auth_basic "Auth";
                auth_basic_user_file /etc/nginx/passwords/var_www_system;
        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                include php_location;
        }

        # concurs with nginx's one
        #
        location ~ /\. {
                deny  all;
        }
}


И php_location

Код: Выделить всё

fastcgi_pass   localhost:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
include fastcgi_params;


Вроде бы, и винить нечего. В чем же может быть проблема?
Спасибо сказали: