blu*_*oon 5 linux ubuntu iptables conntrack
我正在使用 Ubuntu 11.10 和 nginx。我的服务器目前正在执行大约 350 rps(这是传入的负载)。我使用 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
Run Code Online (Sandbox Code Playgroud)
nf_conntrack_max在我确切地知道发生了什么之前,我不想继续增加。我绝对没有 650,000 个连接到我的盒子(单一 IP,所以我没有那么多端口)。
知道发生了什么或我能做些什么来解释它吗?如果你需要更多的数字,我可能会得到它们。
请注意,我的大部分连接都是 HTTP(唯一的例外是我的 ssh 会话),并且 nginx 中的 keepalive 超时设置为 15 秒。还net.netfilter.nf_conntrack_tcp_timeout_time_wait = 1
任何帮助表示赞赏。
我可能有线索。超时字段 fromconntrack -L有几个在 430,000 秒范围内的值。这看起来与 的默认值非常接近nf_conntrack_tcp_timeout_established。我已经nf_conntrack_tcp_timeout_established调低到 300,并且表中所有新条目的超时值都小于 300。这似乎表明,只要 tcp_timeout_established 有效,这些条目就会一直保留在连接跟踪表中。
随着我获得更多信息,将添加到这个答案中。
| 归档时间: |
|
| 查看次数: |
12097 次 |
| 最近记录: |