chrome 间歇性卡顿的原因分析(DNS over TCP 导致的问题)

2022-11-11 04:54:29 +08:00
 txlty
首先排除网上能找到已知原因:
1.有些安全设置可能不适合国内网络环境,如:“使用安全 DNS”,关闭即可。
2.硬件加速的问题:“使用硬件加速”关闭即可。注:如不是这个问题的话,建议开启。
上面两个因素导致的一般为持续规律卡顿,并非莫名其妙的间歇性卡顿。
本文意义在于增加一种已知原因。

症状:上网时,浏览器间歇性的卡一下,你反复刷新想复现时它又好了。过一会又出现。就只是卡顿,并不是网络中断。不是不能用,但搞得你很烦。过一段时间问题可能自己好了,然后某段时间又出现。

原因:
情况一:
DNS 服务器直接设置为运营商默认分配的 DNS ,而该服务器在 TCP 模式下存在问题。TCP 连接有一定的几率出错。不知道是服务器故障,还是防攻击措施,或是什么别的原因。
↓↓
chrome (及内核)浏览器刚打开时,DNS 解析默认走 UDP 协议,运行一会后,偶尔切换至 TCP 模式,尝试与 DNS 服务器的 53 端口建立 TCP 连接。这个时候连接可能出错,会多次尝试到解析成功为止。
↓↓
反应在浏览器上,就是莫名其妙的间歇性卡顿。

情况二:(这种情况应该很多,但被忽略了)
DNS 服务器自动设置为光猫或路由器(如:192.168.1.1 ),而光猫不支持 TCP 协议的 DNS 解析
↓↓
chrome (及内核)浏览器刚打开时,DNS 解析默认走 UDP 协议,运行一会后,偶尔切换至 TCP 模式,尝试与光猫的 53 端口建立 TCP 连接。连接失败后反复尝试,并暂时将 DNS 解析任务交给系统进程( svchost.exe ),以返回解析结果。
↓↓
浏览器产生卡顿。
↓↓
多轮尝试失败后,chrome 不再尝试对光猫的 53 端口创建 TCP 连接,并将 DNS 解析任务完全交给系统进程。
↓↓
不再卡顿。直到关闭浏览器重新打开为止。
1145 次点击
所在节点    程序员
2 条回复
eason1874
2022-11-11 05:09:35 +08:00
说得太复杂, 简单来说就是现在运营商不支持安全 DNS ,所以在 chrome 设置里,要么关闭“使用安全 DNS”,要么开启并填写自定义安全 DNS ,不要选择“使用您当前的服务提供商”
straywarrior
2022-11-12 22:39:34 +08:00
遇到了相似的问题。Chrome 启动时 DNS 走的是 UDP ,此时一切正常。一会儿之后 Chrome 的 DNS 模式切换成了 TCP ,但是我的路由器似乎对 TCP 模式的 DNS 请求返回结果有问题(抓包确认路由器返回的是路由器自己的地址),Chrome 就跪了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX