-
我的服务通过域名调用下游,下游因为故障切换换了 IP,我的服务却还死死连着那个已经下线的旧 IP 一直报连接失败,重启之后才恢复,原来是 DNS 解析结果被缓存了很久不刷新的深度复盘
我的服务通过域名 api.downstream.com 调下游。某天下游故障切换、运维把域名指向了新的健康节点(DNS 里的 IP 变了)。按理说我用的是域名、IP 变了该自动跟上,可现实是我的服务一直在连那个已下线的旧 IP、疯狂报 Connection refused,别的服务都正常,直到我重启才恢复。复盘才搞懂:用域名访问要先经过 DNS 解析把域名翻译成 IP,而这个解析结果会被缓存(系统…- 0
- 0
-
一个 JVM 服务因为默认永久缓存了 DNS 解析结果,在下游域名切换 IP 后还死连着早已下线的旧地址,连接全失败:一次 DNS 缓存的深度复盘
下游第三方做机房迁移,把域名解析到新 IP、旧 IP 下线,域名没变我们本该无感,结果服务大面积连接失败,而服务器上 nslookup 查的是新 IP、重启服务就好了。根因是 JVM 有独立于 OS 的 DNS 缓存,networkaddress.cache.ttl 默认可能是 -1(永久缓存)——进程首次把域名解析成旧 IP 后就永久记住、再也不重新解析,下游换 IP 后还死连旧地址、不重启不自…- 2
- 0
-
我的服务用域名连下游,对方机器扩缩容换了 IP 之后,我的服务却死活还在连那台早已下线的旧机器、疯狂报连接失败,我排查了大半天才发现是 DNS 被永久缓存了的复盘
我的服务用域名连下游,下游扩缩容换了 IP、更新了 DNS 记录,我的服务却死活还连那台早已下线的旧 IP、疯狂报 connection refused/超时;可 dig 查那个域名明明早就是新 IP 了,而且重启我的服务就好、下次换 IP 又犯。深挖才懂是 DNS 缓存:我的 JVM 把启动时解析到的旧 IP 永久缓存了——networkaddress.cache.ttl 在装了 Securit…- 2
- 0
-
下游换了 IP 发布完成后我们死活连不上、下游明明健康重启自己就好:网络第一步 DNS 缓存导致连旧 IP 刻舟求剑的避坑复盘
这是一次下游明明好好的我却死活连不上的诡异故障。起因是我们依赖的一个下游服务做了一次发布,它换了新机器 IP 变了但对外的域名没变,本来嘛用域名访问的好处就是 IP 可以随便换域名不变。下游发布顺利完成自测一切正常,可就在它发布完成的那一刻我们的服务却开始大面积报错:调用那个下游持续地连接超时或者连接被拒绝。我赶紧检查下游服务确确实实是健康的能正常访问的,我们自己的网络代码也都没动,可我们就是连不…- 2
- 0
-
下游换了 IP 我却死连旧址:JVM DNS 缓存避坑
下游团队做了一次寻常的机房迁移:换了台机器、域名没变,只把 DNS 指向新 IP,并通知调用方切换无感知。可切换之后我们的服务开始疯狂报错,连接超时、连接被拒,日志全是连不上下游的红字。诡异的是同一台机器上我用 ping 和 curl 访问那个域名,解析到的明明是新 IP、访问也完全正常,可我的 Java 进程就是死活连着那个早已废弃的旧 IP 不撒手;把进程重启一下问题立刻消失。这个重启就好的特…- 2
- 0
-
K8s 集群偶发 5 秒延迟的 3 天复盘:ndots:5 + glibc 双栈 + conntrack race 五因素叠加 + NodeLocal DNSCache 落地
一套 180 节点 K8s 集群偶发服务间调用 5 秒延迟,P99 从 80ms 飙到 1.2s。3 天定位根因:ndots:5 + glibc 同源端口并发 + IPv4/IPv6 双栈 + iptables conntrack race + UDP 5 秒超时,5 个因素叠加触发稳定的 5 秒 hang。本文完整复盘 K8s DNS 解析链路、NodeLocal DNSCache 部署、6 种…- 0
- 0
-
.NET HttpClient 单例 + K8s 滚动发布失联 4 小时复盘:SocketsHttpHandler 默认 PooledConnectionLifetime 灾难
.NET 8 计费网关上游服务做了次普通滚动发布,我们的 HttpClient 单例对着已经回收的旧 Pod IP 持续报错 18 分钟。SocketsHttpHandler 默认 PooledConnectionLifetime 是无限,DNS 永不刷新。完整复盘 + 6 步自查清单。- 0
- 0
-
DNS 解析优化完全指南:从一次"接口偶发卡顿几秒钟"看懂为什么 DNS 不能甩给操作系统
2023 年我维护一个后端服务后面要调多个第三方 API 上线之后接口大部分时候都很快可 p99 偶尔会冒出几秒钟的尖刺我盯了一周代码层面没看出任何问题第一版我做得很顺手发请求就用 requests.get HTTP 客户端我心里很笃定 DNS 解析嘛操作系统底层的事我又不用管把域名甩给它它会自己查会自己缓存我应用层只管发请求就行可等我真去抓包定位一串麻烦冒了出来第一种最先把我打懵抓包发现那几次卡…- 8
- 0
-
sudo 每次都卡 30 秒才执行:一次 Linux 主机名解析超时的排查复盘
一台新装的内网服务器,每次执行 sudo 任何命令都先卡整整 30 秒,30 秒后命令才瞬间执行完。不是命令慢,是 sudo 在干活前卡住。time 量出 real 30 秒而 user+sys 几乎是 0,说明它不是在算,是在等一个超时。strace 跟下去发现它在反复连 53 端口做 DNS 查询、一次次徒劳超时。排查梳理:sudo 在执行命令前会解析本机主机名用于安全策略匹配和日志记录;主机…- 0
- 0
-
接口偶尔慢 5 秒:一次 Linux DNS 域名解析排查复盘
一个后台服务调用第三方接口,大部分几十毫秒就返回,可隔三差五就慢一次,每次稳定多花约 5 秒。第三方接口压测很快,自己机房别的服务也正常。把那次慢请求用 curl -w 一段段拆开耗时才发现:真正的 HTTP 请求只花了几十毫秒,多出来的 5 秒全在 HTTP 请求开始之前——花在了把域名翻译成 IP 这道域名解析工序上。排查梳理:访问一个接口慢先用 curl -w 把耗时拆成 DNS 解析连接传…- 0
- 0
-
调用接口偶尔卡 5 秒整:一次 Linux DNS 解析慢排查复盘
一个服务调用外部接口时快时慢,偶尔某次卡上整整 5 秒,可对方接口监控正常、ping 域名也不丢包,客户端打点细看卡的 5 秒还在请求发出之前。排查梳理:一次 HTTP 调用在发请求前必须先做 DNS 解析,这一段慢整个调用就慢;卡顿总是规整的整数秒是 timeout 到点的指纹而非网络抖动;系统串行从上到下用 resolv.conf 的 nameserver,第一个超时才换下一个,而第一个 DN…- 0
- 0
-
SSH 登录前要卡 30 秒:一次 sshd 反向 DNS 排查复盘
ssh 登录新服务器,回车后要卡将近 30 秒密码提示符才出现,登录进去操作却飞快。排查梳理:只卡登录那一下、进去就快基本能排除网络通道慢,是 sshd 在你输密码前做的预处理卡住了;sshd 默认开着 UseDNS 会对客户端 IP 做反向 DNS 查询,DNS 不通就干等超时,sshd_config 里 UseDNS 那行被注释掉默认值仍是 yes;GSSAPIAuthentication 默…- 8
- 0
-
调外部接口莫名卡 5 秒:一次 Linux DNS 解析排查复盘
一个服务调外部第三方 API,上线后开始大面积变慢,平时 100ms 的请求动不动卡五秒零几,带着可疑的"整数感"。排查梳理:用 curl -w 把请求各阶段耗时拆开、time_namelookup 独占五秒坐实慢在 DNS、域名变 IP 的完整解析链路、/etc/hosts 与 nsswitch.conf 的本地解析优先级、resolv.conf 的 nameserver 按…- 2
- 0
-
域名解析时好时坏:一次 Linux DNS 与 resolv.conf 排查复盘
同一域名同一台机器,解析一会儿成功一会儿失败。排查梳理:nsswitch 决定的解析顺序与 /etc/hosts、resolv.conf 的 nameserver 是故障转移不是负载均衡、用 dig 逐个体检 DNS 服务器、nscd 与 JVM 的 DNS 缓存坑、解析慢的优化,以及一套 DNS 排查纪律。- 2
- 0
-
域名解析时灵时不灵:一次 Linux DNS 排查复盘
服务调外部 API 偶发超时,curl -w 拆解才发现时间全花在 DNS 解析上。排查梳理:域名变 IP 的完整链路、nsswitch 与 /etc/hosts 的优先级坑、resolv.conf 的 nameserver 顺序与 timeout/rotate、dig 指定 DNS 隔离故障、DNS 缓存与应用层缓存,以及 DNS 配置纪律。- 3
- 0
DNS
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!















