Я использую Ubuntu 11.10 и nginx. Мой сервер в настоящее время делает около 350 оборотов в секунду (это входящая нагрузка). Я использую iptables, чтобы убедиться, что соединения на определенных портах ограничены только ящиками, которые у меня есть.
я заметил nf_conntrack_count
продолжает увеличиваться. Независимо от того, что я нажимаю nf_conntrack_max
к, nf_conntrack_count
соответствует ему в течение дня. Кроме того, это не соответствует тому, что netstat -tn
говорит мне. Вот цифры:
$ sudo sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_count = 649715
net.netfilter.nf_conntrack_max = 650000
$ netstat -tn | awk '{n[$6]++} END { for(k in n) { print k, n[k]; }}'
CLOSING 6
ESTABLISHED 2933
FIN_WAIT1 116
FIN_WAIT2 3447
LAST_ACK 35
SYN_RECV 79
TIME_WAIT 27141
$ sudo conntrack -L | awk '{n[$4]++}; END {for(k in n) { print k, n[k]; }}'
conntrack v1.0.0 (conntrack-tools): 648611 flow entries have been shown.
CLOSE 443
CLOSE_WAIT 2210
ESTABLISHED 645529
FIN_WAIT 45
LAST_ACK 50
SYN_RECV 74
TIME_WAIT 259
Я не хочу продолжать расти nf_conntrack_max
пока я точно не знаю, что происходит. У меня определенно нет 650 000 подключений к моему ящику (один IP, поэтому у меня не так много портов).
Есть идеи, что происходит, или что я могу сделать, чтобы это объяснить? Если вам нужно больше номеров, я, вероятно, их достану.
Обратите внимание, что большинство моих подключений - это HTTP (единственными исключениями являются мои сеансы ssh), а время ожидания поддержки активности в nginx установлено на 15 секунд. Также net.netfilter.nf_conntrack_tcp_timeout_time_wait = 1
Любая помощь приветствуется.
Я могу догадаться. Поле тайм-аута из conntrack -L
имеет несколько значений в диапазоне 430 000 секунд. Это выглядит подозрительно близко к значению по умолчанию nf_conntrack_tcp_timeout_established
. Я настроил nf_conntrack_tcp_timeout_established
до 300, и все новые записи в таблице имеют значение тайм-аута меньше 300. Похоже, это предполагает, что записи остаются в таблице отслеживания соединений до тех пор, пока действует tcp_timeout_established.
Добавлю к этому ответу по мере получения дополнительной информации.