К сожалению, ранее не имел дела с тюнингом системных переменных.
Поправьте список, пожалуйста,
net.ipv4.tcp_orphan_retries 4 # дефолтный был 7
net.ipv4.tcp_fin_timeout 10 # дефолтный был 30
net.ipv4.tcp_max_tw_buckets 60К # дефолтный был 180К, пишут, что этот параметр для защиты от простых ДоС
net.ipv4.tcp_max_orphans 8192 # пишут, что этот параметр для защиты от простых ДоС и каждый орфан жрет 64к памяти
net.ipv4.tcp_rmem 1K (default) (default) # то есть min я поставлю 1К, а default и max оставлю как есть
net.ipv4.somaxconn 4K # если я правильно понимаю, это позволит выставить listen backlog=4K
да, только net.core.somaxconn
можно включить ещё для борьбы с TIME_WAIT
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_recycle
для того чтобы не было видно uptime по сети, можно выключить
net.ipv4.tcp_timestamps
Если используется statefull фаервол, то неплохо или выключить conntrack для 80-го порта(-t raw -J NOTRACK) или увеличить net.ipv4.ip_conntrack_max
ну и в nginx reset_timedout_connection on;
Спасибо, всё стало гораздо лучше.
Только вот я писал "дефолтный был Х", это я на своей машине пробовал, на сервере оказались другие числа. net.ipv4.tcp_orphan_retries на сервере оказалось был 0, причем в sysctl.conf не упомянут, подумал что увеличивать и не надо.
net.ipv4.tcp_max_orphans на сервере оказалось пустое значение, побоялся менять. net.ipv4.tcp_rmem тоже не менял.
и я не знаю как узнать statefull ли файрвол. Используется iptables.