Назад | Перейти на главную страницу

Конфигурация сервера с высоким трафиком - ошибаемся ли мы?

У нас есть сервер REST API с 25 миллионами вызовов каждый день. Наш стек состоит из Haproxy + Gunicorn + Flask, а также у нас есть база данных MongoDB, которая используется нашим Rest API. Мы отслеживаем это с помощью Netdata и смотрим статистику с помощью Elasticsearch. Сервер имеет 64 ГБ оперативной памяти, AMD Ryzen 7 1700x Pro и SSD-накопитель. Иногда сетевые данные используются для предупреждения нас о «Принять переполнение очереди» и «Прослушивание переполнения очереди», когда мы смотрим на эти аварийные сигналы через Google, мы видим, что есть некоторые вещи, которые нужно изменить в sysctl.conf, и мы увеличили необходимое ценится понемногу. После того, как мы изменили значения, мы перестали получать сигналы тревоги. Но даже несмотря на это, когда мы смотрим на sysctl.conf, у нас возникает ощущение, что установленные нами значения абсурдны. Так что, если бы вы могли взглянуть на наш sysctl.conf и прокомментировать его, мы были бы рады. Спасибо.

net.ipv4.tcp_max_syn_backlog = 1000000 net.core.somaxconn = 8192 net.core.netdev_max_backlog = 900000 net.netfilter.nf_conntrack_max = 1024288 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 20 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 20 net.core.wmem_default=8388608 net.core.rmem_default=8388608 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 8388608 16777216 net.ipv4.tcp_wmem=4096 8388608 16777216 net.ipv4.tcp_mem=4096 8388608 10388608 net.ipv4.route.flush=1 net.ipv4.ip_local_port_range = 10000 61000

netstat -s | grep -i list output;

netstat -s | grep -i list 644 times the listen queue of a socket overflowed 279381 SYNs to LISTEN sockets dropped

В настоящее время мы не видим проблем, потому что мы переместили наш Rest API в Websockets, но все же; нам любопытно, и мы хотели бы знать, правильно ли то, что мы делаем. (Наше одновременное соединение составляет около 1200-1500 на Websockets).