Estou usando o Ubuntu 11.10 & nginx. Meu servidor está fazendo atualmente cerca de 350 rps (essa é a carga que está chegando). Eu uso o iptables para garantir que as conexões em certas portas sejam restritas apenas às caixas que possuo.
Eu notei que nf_conntrack_count
continua aumentando. Não importa o que eu envio nf_conntrack_max
para, nf_conntrack_count
corresponde a ele em um dia. Além disso, não corresponde ao que netstat -tn
me diz. Aqui estão os números:
$ 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
Eu não quero continuar aumentando nf_conntrack_max
até saber exatamente o que está acontecendo. Eu definitivamente não tenho 650.000 conexões para minha caixa (IP único, então eu não tenho muitas portas).
Alguma idéia do que está acontecendo ou o que eu posso fazer para explicar isso? Se você precisar de mais números, provavelmente posso obtê-los.
Observe que a maioria das minhas conexões é HTTP (as únicas exceções são minhas sessões ssh) e o tempo limite de keepalive em nginx está definido como 15 segundos. Também net.netfilter.nf_conntrack_tcp_timeout_time_wait = 1
Qualquer ajuda apreciada.