08 09 2026

这是一篇真实的运维故障处理记录,场景熟悉到几乎每个后端开发、运维工程师、甚至客服都经历过。

事情的起因很简单:客户报障,说网站打不开了。但查了一圈,服务器没崩,代码没改,CDN没挂,最后却是一行命令解决了问题。

如果你也遇到过“明明什么都正常,就是有人打不开”的怪事,那这篇文章或许能给你一点排查思路。

一、故障现场:只有 QQ 浏览器不行

客户的消息来得很急:

「你好,我们网站在 QQ 浏览器打不开,赶紧处理!」

客服照例先做分流:

「您好,请问其他浏览器能打开吗?」

客户很快回复:

「Chrome 能打开,就 QQ 浏览器不行!」

这句话一出来,懂行的人心里大概就有数了——大概率不是服务器挂了。因为如果源站真的宕机,不会只针对一个浏览器。

但客户显然不这么想,他的潜台词是:“别的都能打开,就你们合作的这个打不开,肯定是你们网站兼容性问题。”

二、常规排查:一切正常,反而最不正常

客服这边用测试环境复现了一下,发现网站访问流畅,页面秒开。

于是客服尝试把问题推向用户侧:

「我这边测试网站访问正常哦,可能您电脑网络或 DNS 有问题。」

客户立刻反驳:

「不可能!我打开其他网页都好好的!」

这个反驳其实非常有力。从用户视角看:其他网站能打开 = 我的网络没问题 = 问题一定在你们那边。

逻辑听起来没毛病,但网络世界里,事情往往没那么简单。

客服无奈,把问题升级给了后端程序员。

三、程序员介入:查了个寂寞

程序员接手后,按标准流程走了一遍:

  • 检查服务器状态:负载正常,带宽正常,进程存活。

  • 检查应用日志:没有异常报错,访问记录正常。

  • 检查 CDN:节点响应正常,命中率稳定。

  • 检查域名解析:用公共 DNS 解析了一下,IP 正确。

所有指标都绿得发亮,结论只有一个:服务端没有任何问题。

程序员想了一下,让客服转达:

「您 ping 一下我们的域名,把结果截图发我。」

客户操作后很快回复:

「ping 不通啊!你们网站就是有问题!」

这句话在运维眼里其实很有信息量,但在用户眼里,ping 不通 = 服务器死了,这是个非常自然的等价关系。

问题在于——ping 不通,不代表服务不可用。

很多生产环境的服务器或 CDN 节点,出于安全考虑,会直接在防火墙层面禁用 ICMP 协议,也就是禁 ping。这是完全合规的常规操作。

但普通用户不会知道这层逻辑。

四、真相大白:DNS 才是幕后黑手

程序员没有继续纠结 ping 的结果,而是换了一个思路:

“Chrome 能开,QQ 浏览器开不了,而且 ping 域名不通……会不会是 DNS 解析被污染了?”

于是他让客服最后试一步:

「您把电脑 DNS 改成 114.114.114.114 试试。」

几分钟后,客户回复:

「好了!!!能打开了!!」

紧接着跟了一句:

「原来是 DNS 问题,网站根本没坏啊。」

至此,故障闭环。

五、为什么会出现这种情况?

这个案例之所以典型,是因为它同时踩中了几个容易忽略的技术细节:

1. QQ 浏览器的“加速”机制

QQ 浏览器默认开启云端加速,用户的请求会先经过腾讯的代理服务器,再由代理去抓取源站内容。

如果代理服务器所在机房的本地 DNS 解析出了旧 IP(比如 CDN 节点已下线),就会导致请求被丢到黑洞里,而用户自己的电脑 DNS 其实是正常的。

Chrome 不走这个代理,所以能打开。

2. 本地 DNS 缓存污染

用户的电脑或路由器,可能缓存了一个错误的域名解析记录。这个错误记录在 Ping 的时候被直接调用了,所以 ping 不通。

3. 改 DNS 为什么有效

114.114.114.114 是国内通用的公共 DNS,它绕过了运营商(如电信、联通)自带 DNS 的缓存滞后或劫持问题,去根服务器重新获取了最新的解析结果。

一旦拿到正确的 IP,QQ 浏览器的代理请求也就跟着通了。

六、一个小建议

以后再遇到类似“部分浏览器打不开、部分正常”的报障,不用急着翻服务器日志,可以先让用户做两个动作,成本极低,但命中率极高:

  1. 清空 QQ 浏览器的 DNS 缓存
    地址栏输入:

    qqbrowser://netclean/

    点击“立即清除”。

  2. 刷新本地 DNS 缓存
    按 Win + R,输入 cmd,执行:

    ipconfig /flushdns

如果上面两步都不行,再教用户把 DNS 改成本地运营商 DNS 或公共 DNS(如 114.114.114.114 或 223.5.5.5)。

很多时候,用户以为的“网站挂了”,其实是“指路牌(DNS)坏了”。

服务器没崩,代码没改,CDN 没挂,一切如常——只是那条通往你服务器的路,被带偏了而已。

七、写在最后

互联网运维这行,做得越久,就越明白一个道理:

大部分故障都不是“崩”出来的,而是“错位”出来的。

  • 服务正常,但用户访问路径上的某一环出了问题;

  • 代码没动,但下游依赖或基础设施发生了微妙变化;

  • 工具显示一切正常,但就是有用户反馈异常。

这种时候,保持耐心,换个视角去排查,往往比急着“重启大法”更有效。

毕竟,用户眼里的“崩了”,和程序员眼里的“崩了”,从来都不是同一件事。

如果你也有类似的“DNS 玄学”经历,欢迎在评论区分享你的故事。





发表评论