• Почему CLOSE_WAIT зависают и вешают веб-сервер?

    @hx510b
    "Я знаю, что ничего не знаю"
    Можно донастроить TCP стек, чтобы уменьшить время удержания открытых сокетов:
    echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout  # освобождать через 5 секунд
    echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  # включить утилизацию

    Изменить параметрые nginx:
    worker_processes auto;
    - количество процессов по количеству ядер CPU или auto
    events {
           worker_connections 10000;
           multi_accept on;
    }

    - worker_connections сколько надо держать соединений на один процесс, т.е.
    worker_processes * worker_connections = сколько всего соединений надо обрабатывать.
    multi_accept on - процесс будет пытаться сразу брать все новые соединения, а не по одному.
    worker_rlimit_nofile 200000;
    - т.е. если хотим 100000 соединений, то пишем 200000

    надо изменить в системе лимит на количество открытых файлов:
    ulimit -n 1031089
    считается, что для гигабитного канала больше 50 тысяч соединений не получить.

    Еще по теме:
    https://habr.com/post/198982/ - Ускоряем Nginx за 5 минут
    https://romantelychko.com/blog/1300/ - Настройка Linux для высоконагруженных проектов и защиты от DDoS
    Ответ написан
    1 комментарий