Нет ответа от сервера c nginx на некоторые syn?
Добрый день.
Столкнулся со следующей ситуацией.
Есть сервер с 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, в нём они видны.
Подскажите, пожалуйста, что смотреть, куда копать, кто сталкивался?
Столкнулся со следующей ситуацией.
Есть сервер с 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, в нём они видны.
Подскажите, пожалуйста, что смотреть, куда копать, кто сталкивался?
Похожие публикации
DDOS вызвает нагрузку на процессор даже при deny from all в htaccess на сайте!
ПОМОГИТЕ! DLE
Сайты иногда очень медленно загружаются
На одном хостинге или на нескольких
Высокая нагрузка запросами без Header Host. Как защититься?
Нет комментариев