ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Долгий коннект к сер веру (часть вторая)



Недавно писал с темой "Долгий коннект к серверу", с того момента накопилось 
много информации, решил создать новую ветку. На всякий случай снова информация 
о системе:

uname -smr
    FreeBSD 6.2-RELEASE-p1 i386

ginx -v
    nginx version: nginx/0.5.12

В системе установлен RAID5 250GBx8;

Пробовали использовать одинаковые конфигурационные файлы (полный листинг 
приведу в конце сообщения), изменяя только worker_processes. Теперь о 
результатах при идентичных нагрузках (конфиг менялся на продакшн сервере с 
остановкой и запуском nginx):

worker_processes = 1
Подключение к серверу происходит мгновенно, обработка запроса занимает 
длительное время (от 10 до 30 секунд, в зависимости от количества подключений). 
Время обработки запроса не зависит от размера файла. Процесс постоянно висит в 
статусе biord. В лог сыпятся ошибки (возможно, пользователи не дожидаются 
начала загрузки и закрывают соединение):
accept() failed (53: Software caused connection abort) while accepting new 
connection


worker_processes > 2
Очень часто соединение с сервером происходит долго либо пользователи при 
попытке подключения отваливаются по таймауту. Время обработки запроса напротив 
совсем незначительное. Состояние biord проскакивает не часто, большинство 
процессов находятся в kqueue.

И в том и в другом случае с увеличением количества подключений  > 2000 (600-700 
уникальных пользователей) появляются проблемы с "провисанием" загрузки. Т.е. 
пользователь загружает файл в один поток на скорости 10-11кб, потом происходит 
резкое падение скорости и некоторое время (5-10 секунд) в сокет ничего не 
передается. Затем резкий скачок (до 20-30кб), после чего скорость снова 
нормализуется.

При этом (worker_processes = 1) нагрузка на диски:
Disks   ad4   da0 
KB/t  85.77 88.79 
tps      39    79    
MB/s   3.24  6.87 
 % busy   36    70    

В файрволе очередь для балансировки:
ipfw pipe 1 config bw 95Mbit/s delay 10ms
ipfw queue 1 config pipe 1 weight 1 mask all
ipfw add 1000 queue 1 tcp from me 80 to any

И ничего не помогает. Подскажите, в чем может быть проблема и как ее лечить. 
Танцы с бубном уже утомили, причем не только нас но и пользователей :(

Конфигурационный файл:
user  developer developer;
worker_processes  1;

worker_priority -5;

events {
    worker_connections  10000;
    use kqueue;
}

http {
    limit_zone   one  $binary_remote_addr  10m;
    limit_conn   one  4;
   
    access_log off;   
 
    default_type  application/octet-stream;

    sendfile    on;
    tcp_nopush  on;
    tcp_nodelay on;

    keepalive_timeout  0;
    optimize_server_names on;

    perl_modules /www/xxx.com/cgi-bin;
    perl_require Digest/MD5.pm;
    perl_require Unpack.pm;

    server {
        listen       xxx:80 default sndbuf=64K; 
        server_name  xxx.com;

        charset windows-1251;

        error_log    /www/logs/d2nginx.error;

        location / {
            root   /www/xxx.com/htdocs;
            index  index.html index.htm index.cgi;
        }

        location /downloads/ {
            perl Unpack::handler;
            root /www/xxx.com/htdocs;
            expires      30d;
        }

        location ~ /\.ht {
            deny  all;
        }
    }
}




 




Copyright © Lexa Software, 1996-2009.