如何解决系统报错: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 简介》
如何解决系统报错:nf_conntrack: table full, dropping packets的更多相关文章
- 路由跟踪表满,日志报错nf_conntrack: table full, dropping packet.
“连接跟踪表已满,开始丢包”!相信不少用iptables的同学都会见过这个错误信息吧,这个问题曾经也困扰过我好长一段时间.此问题的解决办法有四种(nf_conntrack 在CentOS 5 / ke ...
- 系统调优:如何解决系统报错too many open files
一.检查系统版本是否手工升级 关于lsb_release -a和/etc/issue显示的发行版本号不同,原因只有一个:系统内核手动升级了 对于高并发高http连接的应用程序例如www或Java,会遇 ...
- ECS实例中的应用偶尔出现丢包现象并且内核日志(dmesg)存在“kernel: nf_conntrack: table full, dropping packet”的报错信息
问题描述 连接ECS实例中的应用时偶尔出现丢包现象.经排查,ECS实例的外围网络正常,但内核日志(dmesg)中存在"kernel: nf_conntrack: table full, dr ...
- 不修改系统日期和时间格式,解决Delphi报错提示 '****-**-**'is not a valid date and time
假如操作系统的日期格式不是yyyy-MM-dd格式,而是用strtodate('2014-10-01')) 来转换的话,程序会提示爆粗 '****-**-**'is not a valid date ...
- [转]解决Maven报错"Plugin execution not covered by lifecycle configuration"
[转]解决Maven报错"Plugin execution not covered by lifecycle configuration" 导入Myabtis源码后,POM文件会报 ...
- Linux 系统报错 rcu_preempt detected stalls on CPUs/tasks
说在前面的一些废话: 这是什么错误我不知道,为什么出现我不知道! 那为什么还要把他写出来了,只是因为这个错误遇到了,而且浪费了我很多时间和精力. 故事留给自己看,解决办法就是,重新升级一下Linux系 ...
- PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files)
PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files) 故障现象,后台页面点击没有 ...
- [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法 中午业务说机器不能登录,我通过USM管理界面登录单板的时候发现机器没有僵 ...
- 解决Mysql报错缺少libaio.so.1
解决Mysql报错缺少libaio.so.1 报错如上图,需要安装libaio.so.1 64位系统安装: wget http://mirror.centos.org/centos/6/os/x86_ ...
- Ubuntu系统---报错Assertion '0' failed
Ubuntu系统---报错Assertion '0' failed YOLO V3,CUDA Error: out of memory darknet: ./src/cuda.c:36: check_ ...
随机推荐
- 牛客网-SQL专项训练22
①在SQL中如何删除触发器:DROP TRIGGER 解析: 辨别:DROP TRIGGER 和 DELETE TRIGGER 删除触发器操作必须使用DROP语句进行,DELETE是删除行记录. ②请 ...
- 【pytorch学习】之数据操作
1 数据操作 为了能够完成各种数据操作,我们需要某种方法来存储和操作数据.通常,我们需要做两件重要的事:(1)获取数据: (2)将数据读入计算机后对其进行处理.如果没有某种方法来存储数据,那么获取数据 ...
- 媒体智能-淘宝直播流媒体互动实践 | D2 分享视频+文章
背景:今天给大家带来的分享主题是<媒体智能-淘宝直播流媒体互动实践>,内容分为5个部分,首先看看在淘宝直播的直播间里主播可以怎样给用户拜年:然后具体讲如何制作一个手势拜年的特效:接着介绍我 ...
- 使用ssh连接远程仓库的方法(github)
使用ssh连接远程仓库的方法 但是当我登录虚拟机想提交csapp的代码时,我发现需要验证我的账号密码,感觉每次提交都要输入这个很麻烦.然后就在网上查询了下为何提交代码需要输入账号密码. 使用 HTTP ...
- dotnet C# 高性能配置文件读写库 dotnetCampus.Configurations 简介
在应用程序运行的时,需要根据不同的配置执行不同的内容.有很多根据配置而初始化的功能往往是在应用程序启动的时候需要执行.对于很多类型的应用程序,特别是客户端的应用程序,启动的性能特别重要.也因此,在启动 ...
- 2019-7-2-WPF-通过-ReadyToRun-提升性能
title author date CreateTime categories WPF 通过 ReadyToRun 提升性能 lindexi 2019-07-02 10:29:55 +0800 201 ...
- 17.prometheus服务发现&基于文件的服务发现
一.服务发现 Prometheus 中是如何使用服务发现来查找和抓取目标的.我们知道在 Prometheus 配置文件中可以通过一个 static_configs 来配置静态的抓取任务,但是在云环境下 ...
- k3s入门与实战---适配边缘计算场景的轻量级的k8s(一)
一.k3s介绍 1.1 什么是k3s? k3s 是经过 CNCF 认证的由 Rancher 公司开发维护的一个轻量级的 Kubernetes 发行版,内核机制还是和 k8s 一样,但是剔除了很多外部依 ...
- 日志服务 HarmonyOS NEXT 日志采集最佳实践
背景信息 随着数字化新时代的全面展开以及 5G 与物联网(IoT)技术的迅速普及,操作系统正面临前所未有的变革需求.在这个背景下,华为公司自主研发的鸿蒙操作系统(HarmonyOS)应运而生,旨在满足 ...
- await this.$nextTick()和this.$nextTick(callback)有什么区别?记一次bug调试
背景 需要实现一个需求,一个小区业务详情页面,在左侧菜单栏切换了小区后,详情页跟着切换. 这个详情页面是根据url上的/:id来确定小区id的,所以切换了小区后,应该切换路由. 于是这样实现: wat ...