Ошибки Nginx/PHP-FPM kevent() при стресс-тестировании

Добрый день,

Я использую коробку FreeBSD (9.1-RELEASE) с Nginx (1.2.7_1,1) и PHP-FPM (5.4.12). У меня большие проблемы с обработкой одновременных запросов с использованием Apache AB:

ab -n 10000 -c 500 http://10.128.28.164/index.php

Основная ошибка, которую я получаю в /var/log/httpd-error.log (в тысячах):

08.03.2013 11:11:10 [ошибка] 99855#0: *44116 kevent() сообщил, что connect() не удалось (54: сброс соединения узлом) при подключении к восходящему каналу, клиент: 10.128.28.179, сервер: localhost , запрос: "GET /index.php HTTP/1.0", восходящий поток: "fastcgi://10.128.28.164:9000", хост: "10.128.28.164"

Если я просматриваю сервер (10.128.28.164), он отлично работает для страниц HTML и PHP.

Любая помощь будет потрясающей!

Пит.

Мой файл php-fpm.conf выглядит так:

pid = run/php-fpm.pid
error_log = log/php-fpm.log
daemonize = yes
events.mechanism = kqueue

; Pool
[www]

user = www
group = www

listen = 10.128.28.164:9000

pm = dynamic
pm.max_children = 100
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 100

Мой файл nginx.conf выглядит так:

worker_processes  4;

error_log  /var/log/httpd-error.log;

events {
    worker_connections  1024;
}

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

    access_log  /var/log/httpd-access.log;

    sendfile        on;

    keepalive_timeout  65;

    gzip  on;

    server {
        listen       10.128.28.164:80;
        server_name  localhost;

        root /usr/local/www;

        location ~ \.php$ {
            fastcgi_pass  10.128.28.164:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_script_name;
            include        fastcgi_params;
        }

        location / {
            index  index.html;
        }
    }
}

person Pete    schedule 08.03.2013    source источник


Ответы (1)


Проверьте dmesg на наличие сообщений ядра о том, что максимальное количество сетевых подключений или открытых файлов или какой-либо другой ресурс исчерпан (точнее, достигнут предел).

Процитированное вами сообщение журнала рассказывает только часть истории прокси. Почему серверная часть сбрасывает соединения, это следует проверить в журналах серверной части... Например, php-fpm также может исчерпать лимит файловых дескрипторов на процесс -- поэтому проверьте свой журнал/php-fpm.log на наличие ошибок.

person Mikhail T.    schedule 10.04.2013