关于linux:如何解决系统报错nfconntrack-table-full-dropping-packets

31次阅读

共计 1915 个字符,预计需要花费 5 分钟才能阅读完成。

问题

在系统日志中(/var/log/messages),有时会看到大面积的上面的报错:

nf_conntrack: table full, dropping packet

这阐明零碎接到了大量的连贯申请,然而零碎的连贯跟踪表曾经满了,无奈再记录新的连贯了。这时候,零碎会抛弃新的连贯申请。

在 CentOS 下,默认的连贯跟踪表大小是 65536,能够通过上面的命令查看:

cat /proc/sys/net/netfilter/nf_conntrack_max

如果流量比拟小,这个值是没问题的,但如果流量微小,这个值可能就有点太小了。

解决办法

显然,调大最大值的限度就能够了。不过更大的限度意味着能够承接更多连贯,意味着要消耗更多资源,这点要留神。

查看以后有多少沉闷连贯:

cat /proc/sys/net/netfilter/nf_conntrack_count

如果这个值跟下面介绍的 nf_conntrack_max 曾经很靠近了,就阐明快满了,须要调大 nf_conntrack_max。能够应用上面的命令长期调大:

echo 524288 > /proc/sys/net/netfilter/nf_conntrack_max

如果不想每次重启都要从新设置,能够批改 /etc/sysctl.conf,退出上面的配置:

net.netfilter.nf_conntrack_max = 524288

为了缓解大量连贯的问题,您可能还须要思考缩小服务器期待连贯敞开 / 超时的工夫。在 /etc/sysctl.conf 中退出上面的配置:

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60

如何监控

平时应用 categraf(https://github.com/flashcatcloud/categraf) 监控就能够了,categraf 提供了 input.conntrack 采集插件,能够采集 conntrack 的信息,倡议采集配置如下:

conf/input.conntrack/conntrack.toml:

files = [
    "ip_conntrack_count",
    "ip_conntrack_max",
    "nf_conntrack_count",
    "nf_conntrack_max"
]

dirs = [
    "/proc/sys/net/ipv4/netfilter",
    "/proc/sys/net/netfilter"
]

# ignore errors
quiet = true

完事配置一个相似上面的监控规定即可:

conntrack_ip_conntrack_count / ip_conntrack_max > 0.8

另一个监控计划,是间接监控系统日志,算是一个兜底监控计划,能够采纳 catpaw 来监控,catpaw 提供了 journaltail 采集插件,能够读取近期系统日志,grep 关键字,如果出现异常关键字就告警,配置如下:

conf.d/p.journaltail/journaltail.toml:

[[instances]]
# journalctl -S -${time_span}
time_span = "1m"
# relationship: or
keywords = ["Out of memory", "nf_conntrack: table full, dropping packets"]
# check rule name
check = "Critical System Errors"
# # gather interval
interval = "30s"

[instances.alerting]
## Enable alerting or not
enabled = true
## Same functionality as Prometheus keyword 'for'
for_duration = 0
## Minimum interval duration between notifications
repeat_interval = "5m"
## Maximum number of notifications
repeat_number = 3
## Whether notify recovery event
recovery_notification = true
## Choice: Critical, Warning, Info
default_severity = "Warning"

catpaw 的入门应用,能够参考文章:《太卷了,史上最简略的监控零碎 catpaw 简介》

正文完
 0