如何解决系统报错:nf_conntrack: table full, dropping packets

这篇具有很好参考价值的文章主要介绍了如何解决系统报错:nf_conntrack: table full, dropping packets。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

在系统日志中(/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 简介》文章来源地址https://www.toymoban.com/news/detail-480356.html

到了这里,关于如何解决系统报错:nf_conntrack: table full, dropping packets的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何解决ubuntun虚拟机报错“如果该文件位于远程文件系统上,请确保网络连接以及该磁盘所在服务器正常工作..........”

    一.问题描述 昨天晚上本人虚拟机在跑数据的时候突然卡顿了,然后重启,重启不开,居然直接报错(如下图),本来兴致勃勃这种问题已经出现了不知道n次了,直接删除安装目录中的lck文件文件就OK了,这次直接没用了,我当然就奔溃了,我擦,我那么多数据呢都没转移到

    2024年04月15日
    浏览(113)
  • Linux网络之连接跟踪(conntrack)

    连接跟踪是很多网络服务和应用的基础。例如,kubernetes的service,ServiceMesh sidecar,4层负载均衡软件LVS/IPVS,容器网络,OpenvSwitch,OpenStack安全组等等都是依赖连接跟踪。 概念 顾名思义,连接跟踪就是跟踪或维护网络连接及其状态的。 机上连接跟踪示例 上图中,Linux主机的I

    2024年02月15日
    浏览(36)
  • linux开启防火墙后,Docker容器启动报错:ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule 解决办法

    目录 1、错误场景和现象 2、原因分析 3、解决办法 linux开启或重启防火墙后,创建docker自定义网络时 报错: [root@VM-16-5-centos home]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 frayernet Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (ipta

    2024年02月12日
    浏览(45)
  • 操作系统动态分区分配方式C/C++语言(首次适应算法(FF)循环首次适应算法(NF)最best适应算法(BF)最坏适应算法(WF))

    一、动态分区分配算法 为把一个新作业装入内存,须按照一定的分配算法, 从空闲分区表或空闲分区链中出一分区分配给该作业。由于内存分配算法对系统性能有很大的影响,故人们对它进行了较为广泛而深入的研究,于是产生了许多动态分区分配算法。传统的四种分配算

    2024年02月10日
    浏览(42)
  • 【python】如何安装requests库,以及如何引用(含报错如何解决)

    非常非常重要,后期操作大多都需要requests库,那么这篇文章就来分享下如何安装requests库,以及在python中如何引用 首先,看一下如何安装 1、定位到python的 scripts文件路径 2、使用命令安装pip install requests 安装requests库 3、在编辑器(我的是pycharm)中输入import requests如果没有报

    2024年02月20日
    浏览(51)
  • BCNF与3NF

    今天学了一下午这个 B C N F BCNF BCNF 与 3 N F 3NF 3 NF ,有感而发,特来总结。好像好久不打键盘了,这手好像刚长出来的一样。本文浅显的分析一下两种范式的关系与不同以及判断方法和分解算法,以做总结。 B C N F BCNF BCNF 范式的定义如下: 设属性集合 U = { A , B , C , D , . . . ,

    2024年02月09日
    浏览(20)
  • 如何解决elasticsearch分页总数量超过10000条就报错

    默认情况下,Elasticsearch集群中每个分片的搜索结果数量限制为10000。这是为了避免潜在的性能问题。具体报错信息如下: 但是,可以通过以下几种方法解决这个问题。 1. 使用scroll API:scroll API可以帮助我们在不加载所有数据的情况下获取所有结果。它会在后台执行查询以获取

    2024年02月17日
    浏览(56)
  • 报错“FirewallD is not running”怎么办,如何解决?

    一、报错详情 二、解决方法—开启防火墙步骤 步骤一:先通过命令查看一下防火墙的状态。  步骤二:开启防火墙。 步骤三:再次查看防火墙状态 在docker创建redis容器,在进行window访问redis容器端口进行绑定设置时,执行 firewall-cmd --zone=public --add-port=6379/tcp --permanent 进行防

    2024年02月02日
    浏览(41)
  • 如何使用postman调用若依系统接口(报错401,认证失败,无法访问系统资源)

    有时候我们想使用postman调用若依接口,会报下面的401错误,认证失败,无法访问系统资源。 原因是请求中没有token,没法通过若依的权限认证,下面来说一下如何解决。 一、登录若依系统,获取token 随便找一个请求,查看请求头中的内容,获取里面的token,复制下面这一块的

    2024年02月05日
    浏览(48)
  • Python报错:ModuleNotFoundError: No module named ‘xxx‘,如何解决?

    Python报错:ModuleNotFoundError: No module named \\\'xxx\\\',如何解决? 在Python开发中,经常会遇到报错信息\\\"ModuleNotFoundError: No module named \\\'xxx\\\'\\\"的问题。这个错误通常是由于没有正确安装或导入所需的模块导致的。本文将探讨这个问题的解决方法,并提供一些实际的代码示例。 为了说明这个

    2024年02月05日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包