ПРОЕКТЫ 


  АРХИВ 


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]

Нет ответа от сервера c nginx на некоторые syn


  • To: nginx-ru@xxxxxxxxx
  • Subject: Нет ответа от сервера c nginx на некоторые syn
  • From: Алексей Малов <scukonick@xxxxxxxxx>
  • Date: Thu, 17 Jan 2013 16:08:06 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:date:message-id:subject:from:to :content-type; bh=0rgUb4eVcQdmIxuGqnBo8JHhK88RdS2S8p4D2u/ns14=; b=uEIGMwalf7R1a5Dt6Zn/tBW8KhmDMkVElyd79M/hcLEPx+gw+FZg9y2+DgChQCwFnh gg0qDR9XpjRULK4VluMOT3RvJyyGQjIA04MFqpimZ9ciaEiHzbWafEdcgqW24ty4IisO vzqSO7kb85qiXSghAWpKzlDDhbpvjjpRcN7ve1p85IDX2+gNUGXimgBoa/+fmZsmicAV 6VtloR+BD8haFQiYC8cMqvDhV+q9saq9fM69PTnwl0lGBb/GMMmRD2cGQNCjMpk67/Sj cnoU8IO2jgd6k0qiLk5u2y0xfzvEEmhoh8E4D1iBQmJ+pIF9F5TloNeNGVAB95Fx1KbW HB5A==

Добрый день.
Столкнулся со следующей ситуацией.
Есть сервер с Debian Squeeze, на нём установлен nginx 0.7.67 (из репозитория).
В принципе, всё работает без проблем, но заметили, что иногда не получается приконнектиться к порту. SYN приходит, ответа нет.
Пробовал включить syncookies, это несколько помогло (в логах вылезли ошибки про ?possible SYN flooding on port 80. Sending cookies.?). Но всё равно были проблемы с коннектом. Синфлуда при этом нет, это просто много легального трафика.
После этого, увеличил следующие параметры:
net.core.somaxconn = 128000
net.core.netdev_max_backlog = 10000
net.ipv4.tcp_max_syn_backlog = 128000
'
У нжинкса увеличил listen backlog до 65536.

Сообщения про ?possible SYN flooding? исчезли, однако всё равно периодически не приконнектиться к серверу. Проверял простеньким скриптом, который поднимает 20 тредов и открывает и закрывает сокеты к 80-му порту в каждом треде.
Из 1000 попыток открыть сокет около 30-50 отваливаются по таймауту (2 секунды), остальные при этом коннектятся практически мгновенно.

При всём этом в dmesg пусто, в error.log нжинкса тоже пусто.

Кусок конфига нжинкса:
user                    www-data;
worker_processes        2;
worker_rlimit_nofile    65535;
error_log               /var/log/nginx/error.log;
pid                     /var/run/nginx.pid;

events {
        worker_connections              65535;
        use                             epoll;
}
server {
    listen 80 default backlog=65536;
.....
}


На сервере 2 ядра, LoadAverage держится меньше единицы.

В netstat'e примерно такая картина:
# netstat -ant | grep tcp | tr -s ' ' ' ' | awk '{print $6}' | sort | uniq -c
     22 CLOSING
   3729 ESTABLISHED
    815 FIN_WAIT1
   3807 FIN_WAIT2
    138 LAST_ACK
      5 LISTEN
    167 SYN_RECV
     37 SYN_SENT
   1104 TIME_WAIT


В stub_status'e нжинкса:
Active connections: 5985 
server accepts handled requests
 35200 35200 34437 
Reading: 341 Writing: 223 Waiting: 5421 

На всякий случай ? SYNы до сервера точно доходят, снимал tcpdump, в нём они видны.

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

P.s. Задавал этот вопрос на хабре и рассылке debian-ru, извините, если кому-то намозолил глаза. Но ответа пока не нашёл.

--
Alexey Malov
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.