linux内核多长时间删除一个arp表项 arp 黑洞

如何设置为什么旧的 arp 表项一直没有老化呢?

1. 缩短基础可达时间到 5 秒(实际波动在 2.5s~7.5s)

sysctl -w net.ipv4.neigh.default.base_reachable_time_ms=5000

2. 缩短陈旧条目保留时间到 5 秒

sysctl -w net.ipv4.neigh.default.gc_stale_time=5

3. 提高扫描频率到 2 秒一次

sysctl -w net.ipv4.neigh.default.gc_interval=2

原来还与如下参数(net.ipv4.neigh.default.gc_thresh1)有关

net.ipv4.neigh.default.gc_thresh1 = 2048

net.ipv4.neigh.default.gc_thresh2 = 4096

net.ipv4.neigh.default.gc_thresh3 = 8192

1. gc_thresh1:决定了删除的"积极性"

这是对您影响最大的参数。

  • 逻辑:如果当前 ARP 条目总数 小于 gc_thresh1 (2048),内核的垃圾回收器(GC)会认为内存非常充裕,处于"休眠"状态。
  • 后果:即使条目已经达到了 gc_stale_time(60秒)的老化条件,内核也完全不会去清理它。这些条目会一直留在 STALE 状态,直到条目总数超过 2048。
  • 结论:在您的 80 个 Pod 压测环境下,条目看起来永远不会老化删除,因为总数远达不到 2048。

2. gc_thresh2 和 gc_thresh3:决定了强制清理的频率

这两个参数只有在网络规模极大时才起作用:

  • gc_thresh2 (4096):一旦超过这个值,内核会每隔 5 秒强制启动一次清理。
  • gc_thresh3 (8192):一旦超过这个值,内核会在分配新条目前同步进行强制清理,速度最快,但也最消耗 CPU。

3. 真正控制"老化速度"的参数是谁?

如果您想让 ARP 老化得更快(比如从 REACHABLE 变到 STALE 再到消失),您应该调整以下参数:

  • 状态切换速度:由 base_reachable_time_ms 决定(默认 30s)。
  • 陈旧等待时间:由 gc_stale_time 决定(默认 60s)。
  • 物理删除动作:由 gc_thresh1 决定。
相关推荐
0xDevNull15 小时前
Linux切换JDK版本详细教程
linux
进击的丸子15 小时前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
茶杯梦轩16 小时前
从零起步学习RabbitMQ || 第二章:RabbitMQ 深入理解概念 Producer、Consumer、Exchange、Queue 与企业实战案例
服务器·后端·消息队列
甲鱼9291 天前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
Johny_Zhao2 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao3 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1234 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑4 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件4 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒4 天前
OpenClaw 多 Agent 配置实战指南
运维