Я настраиваюсь sysctl.conf
.
Согласно руководство по оптимизации на веб-сайте linode можно установить следующее разумное значение sysctl.conf
:
net.ipv4.tcp_max_syn_backlog = 3240000
Однако такое же значение в руководстве по оптимизации Archlinux:
net.ipv4.tcp_max_syn_backlog = 65536
Наконец, на другом блог оптимизации (это старый, но все же SEO-специалисты довольно высоки в Google), ценность рекламируется следующим образом:
net.ipv4.tcp_max_syn_backlog = 4096
Все эти парки с мячом очень разные. В чем причина установки для этого значения большего числа (а не меньшего)? Какое из них должно быть фактическим «разумным» значением для начала?
В основном это зависит от того, какой объем трафика вы используете через сервер (ы). Есть несколько важных вопросов:
nginx
, haproxy
, varnish
Вы должны отслеживать:
netstat -s | grep "SYNs to LISTEN"
что является признаком того, что ваш сервер отбрасывает пакеты (например, потому что очередь невыполненных работ заполнена).
Статистика Netstat экспортируется в /proc/net/netstat
где стат называется ListenDrops
. Возможно, будет проще разобрать сценарий или использовать что-то вроде:
cat /proc/net/netstat | awk '(f==0) { i=1; while ( i<=NF) {n[i] = $i; i++ }; f=1; next} \
(f==1){ i=2; while ( i<=NF){ printf "%s = %d\n", n[i], $i; i++}; f=0}'
чтобы получить удобочитаемые названия статистики. Вы должны иметь возможность собирать эти данные, например, телеграф, собирать или Прометей.
net.ipv4.tcp_max_syn_backlog
- Сколько полуоткрытых соединений, для которых клиент еще не отправил ответ ACK, может храниться в очереди (источник).
net.core.somaxconn
Максимальное количество подключений, которые можно поставить в очередь на прием
net.core.netdev_max_backlog
Максимальное количество пакетов в очереди приема, прошедших через сетевой интерфейс и ожидающих обработки ядром.
Эти настройки тесно связаны с количеством открытых файлов (так как в Linux каждое новое соединение будет открывать 2 дескриптора файлов). Вы можете проверить свои лимиты, используя:
cat /proc/sys/fs/file-nr
8160 0 3270712
Это означает, что на сервере 8160
открытые файлы из 3270712
.