Улучшить быстродействие системы можно таким способом!
worker_processes лучше ставить в auto на последних версиях nginx.
worker_connections 4000; - это очень мало для нормального проекта типа профит центра того же. Мы даём максимальное кол-во соединения это 65536.
По мимо этого nginx даже не сможет принимать твои 4000 одновременных соединения. А максимум 2048! так они ограничены в ядре самой операционной системы.
Пофиксим sysctl:
net.core.somaxconn = 131072
и для очереди:
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 65535
полуоткрытые убиваем (очень важные строчки)!!!:
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
Увеличиваем диапазон портов:
net.ipv4.ip_local_port_range = 1024 65535
не забываем рубить соединения (отстроить таймауты)дабы не получить сусфлуда и забития интернет канала:
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_time = 15
выставляйте приоритет nginx дабы при ддосе он не загнался и продолжал обрабатывать запросы:
worker_priority -2;