0

0

Linux 服务器大量 "nf_conntrack: table full" 如何用 conntrack -D 快速清空

冷炫風刃

冷炫風刃

发布时间:2026-02-11 14:37:02

|

963人浏览过

|

来源于php中文网

原创

conntrack -D 仅临时缓解连接跟踪表满问题,不能根治;需结合调参、源头控制及定位异常连接源才能彻底解决。

linux 服务器大量 \

conntrack -D 清空连接跟踪表是否真能解决问题

不能直接解决,只是临时缓解。Linux 内核的 nf_conntrack 表满时,新连接会被丢弃(SYN 包不响应),conntrack -D 会清掉所有已建立、已关闭、甚至 TIME_WAIT 状态的连接条目,但只要流量模式不变,几分钟内就会再次打满。

真正要防复发,得配合调参和源头控制:

  • conntrack -D 只对用户态可见条目生效,内核中已标记为不可删除(如正在被 NAT 规则引用)的条目不会被删
  • 执行前建议先看下当前条目数:conntrack -C,再用 conntrack -L | head -20 快速确认是否真有大量短连接残留
  • 如果 conntrack -C 显示接近 net.netfilter.nf_conntrack_max 值(比如 65536),说明表确实满了;低于 80% 却报错,大概率是内存分配失败或 slab 耗尽,不是单纯条目多

conntrack -D 的安全执行方式与常见误操作

直接跑 conntrack -D 会清空全部连接,包括还在传输中的 SSH、数据库长连接,导致运维中断或事务失败。必须加过滤条件。

最常用且安全的组合是按状态清理旧连接:

  • 只删已关闭的连接:conntrack -D --state ESTABLISHED,RELATED,INVALID(注意:这个写法实际无效,--state 不支持多值逗号分隔)
  • 正确写法是分批执行,例如先删超时的:conntrack -D --state CLOSE,WAIT,FIN_WAIT,TIME_WAIT
  • 更稳妥的是按超时时间删:比如删掉 30 秒以上没活动的条目:conntrack -D -o extended | awk '$NF > 30 {print $1}' | xargs -r conntrack -D -s
  • 别在 crontab 里无条件写 conntrack -D —— 某次网络抖动导致连接堆积,自动清表可能让负载雪崩

为什么调大 nf_conntrack_max 不一定管用

单纯改 net.netfilter.nf_conntrack_max 可能触发内存不足错误,因为每个连接条目约占用 376 字节(x86_64),设成 131072 就要吃掉近 50MB 内核内存,而 nf_conntrack_buckets(哈希桶数量)默认只取 max 的 1/8,桶太少会导致哈希冲突激增,反而降低查找性能。

Flowith
Flowith

一款GPT4驱动的节点式 AI 创作工具

下载

调整必须配套:

  • 先算内存余量:free -m 看可用内核内存(非用户态)是否足够
  • 同步调 nf_conntrack_buckets,推荐设为 nf_conntrack_max / 4(最小 65536),否则即使 max 很大,桶不够照样撞表满
  • 改完必须 reload conntrack 模块或重启网络服务,sysctl -p 仅对部分参数生效,nf_conntrack_buckets 需在模块加载时指定:echo 'options nf_conntrack nf_conntrack_buckets=65536' > /etc/modprobe.d/nf_conntrack.conf

查清谁在疯狂建连接才是关键

表满从来不是孤立现象,而是上游行为异常的信号。别急着清表,先定位来源:

  • conntrack -L | awk '{print $5}' | cut -d= -f2 | sort | uniq -c | sort -nr | head -10 查最多连接的目标 IP
  • 结合 ss -tn src :80tcpdump -i any port 80 -c 100 看真实流量特征(是否大量 SYN 不回复?是否源端口突增?)
  • 检查是否有未限制的 API 接口被刷、爬虫没设 User-Agent、或者后端服务故障导致客户端重试风暴
  • 某些云厂商的 LB 健康检查会高频建连,若检查间隔小于 conntrack 超时时间(默认 30s),也会快速填满表

conntrack 表满本身不难处理,难的是区分这是瞬时毛刺还是系统性设计缺陷——比如一个没做连接池的 Python requests 脚本每秒建 200 个 HTTP 连接,清表只是给下次崩溃倒计时。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

191

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

11

2026.02.03

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

399

2023.09.04

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1370

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

318

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2208

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

36

2026.01.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

409

2023.07.18

2026春节习俗大全
2026春节习俗大全

本专题整合了2026春节习俗大全,阅读专题下面的文章了解更多详细内容。

56

2026.02.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.9万人学习

Git 教程
Git 教程

共21课时 | 3.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号