DNS服务器解析故障处理记录之arp_cache neighbor table overflow

news/2024/11/30 14:31:55/

过程背景

收到反馈 dns 解析异常,手动 dig 客户端响应超时:

dig test.com @ip# 省略部分
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

过一段时间后 dig 恢复正常,dns 服务在故障过程中并没有重启过,我怀疑是公网网络出了问题,不是 dns 服务程序本身的问题。所以提出再出现故障,上服务器 dig 127.0.0.1 看解析是否正常。

没想当晚问题马上又来了,立刻上服务器 dig,本以为自信认为不会出任何问题的,结果打脸了,心里瞬间慌了。

dig test.com @127.0.0.1../../../../lib/isc/unix/socket.c:2104: internal_send: 127.0.0.1#53: Invalid argument
../../../../lib/isc/unix/socket.c:2104: internal_send: 127.0.0.1#53: Invalid argument; <<>> DiG 9.10.6 <<>> test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59732
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;test.com.			IN	A;; ANSWER SECTION:
test.com.		3600	IN	A	127.0.0.1;; Query time: 16 msec
;; SERVER: 192.168.50.1#53(192.168.50.1)
;; WHEN: Mon Apr 03 23:36:57 CST 2023
;; MSG SIZE  rcvd: 42

现象是,dig 执行后没有很快的响应,等待了一下手输出,并且在正常的信息前报了两个错误:
internal_send: 127.0.0.1#53: Invalid argument

查看内核日志

dmesg | head -10[529571.395313] neighbour: arp_cache: neighbor table overflow!
[529571.416911] neighbour: arp_cache: neighbor table overflow!
[529571.416915] neighbour: arp_cache: neighbor table overflow!

查看当前 arp 记录数

arp -an | wc -l796

查看 arp gc 阀值

sysctl -a | grep gc_threshnet.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024
net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024

gc_thresh1: 少于这个值,gc 不会启动
gc_thresh2: ARP表的最多纪录的软限制,允许超过该数字5秒
gc_thresh3: ARP表的最多纪录的硬限制,大于该数目,gc立即启动,并强制回收

解决方案

调整节点内核参数,将 arp cache 的 gc 阀值调高 (/etc/sysctl.conf):

# Setup DNS threshold for arp
net.ipv4.neigh.default.gc_thresh3 = 8192
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh1 = 1024

sysctl -p 使其生效

相关资料

https://www.cnblogs.com/tencent-cloud-native/p/14481570.html


http://www.ppmy.cn/news/41605.html

相关文章

Delphi TdxBarManager通过代码生成菜单

procedure TForm6.btn1Click(Sender: TObject); var ABar:TdxBar; ABarItem:TdxBarItem; ABarSubItem:TdxBarSubItem; ABarItemLink:TdxBarItemLink; ABarButton:TdxBarButton; begin Self.dxBarManager1.Style:bmsOffice11; //设置样式 bmsFlat|bmsOffice…

gnome换回纵向切换工作区

效果&#xff1a; 思路 最新的debian / ubuntu中用的gnome 4.x&#xff0c;工作区切换变成了左右切换&#xff0c;习惯了上下&#xff0c;真的很不舒服。 而且优化选项里也把设置开关取消掉了&#xff0c;解决方案是使用Vertical overview这个扩展&#xff1a; ## 安装扩展管…

2.30、守护进程(1)

2.30、守护进程&#xff08;1&#xff09;1.终端是什么2.进程组是什么3.会话是什么4.进程组、会话、控制终端之间的关系5.进程组、会话操作有哪些函数①pid_t getpgrp(void);②pid_t getpgid(pid_t pid);③int setpgid(pid_t pid, pid_t pgid);④pid_t getsid(pid_t pid);⑥pid…

前端必备技能——TypeScript与JavaScript区别

TypeScript与JavaScript区别 文章目录TypeScript与JavaScript区别[TOC](文章目录)前言一、什么是JavaScript?二、什么是TypeScript?TypeScript增加了什么&#xff1f;TypeScript的应用三、JavaScript与TypeScript的区别总结前言 TypeScript逐渐成为前端工程师必备的技能之一…

2.3-6循环链表

原理的单链表和循环单链表的区别&#xff1a; 初始化循环单链表时&#xff0c;使头节点next指针指向头节点。 判断循环单链表是否为空。 对比&#xff1a; 单链表&#xff1a;if(L->next NULL) 双链表&#xff1a;if(L->nextL) 判断循环单链表的结点p是否为表尾结点…

「 操作系统 」聊聊进程调度算法

「 操作系统 」聊聊进程调度算法 图文并茂&#xff01;谈谈进程调度那些算法 Cone 进程调度/页面置换/磁盘调度算法 xiaolinCoding 图解经典的进程调度算法 飞天小牛肉 文章目录「 操作系统 」聊聊进程调度算法一、进程调度的定义二、非抢占式调度算法先到先服务 FCFS最短作业优…

主流Java组件和框架

WEB 容器 Tomcat https://tomcat.apache.org/ Jetty https://www.jetty.com/ JBoss https://www.jboss.org/ Resin https://caucho.com/products/resin 数据库 H2 https://h2database.com/ SQLite https://www.sqlite.org/ MySQL https://www.mysql.com/ Oracle https://www…

7.Easyexcel的使用

七.Easyexcel的使用 1.为什么程序中需要使用excel 2.技术选型 3.具体使用 七.Easyexcel的使用 1.为什么程序中需要使用excel 企业用excel表格导入批量数据保存日志出勤记录等不变数据异构系统间数据传输 PHP系统无法访问数据库&#xff0c;开发JAVA系统来增加功能&#xf…