V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
txlty
V2EX  ›  程序员

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

  •  
  •   txlty · 2022-11-11 04:54:29 +08:00 · 1383 次点击
    这是一个创建于 772 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先排除网上能找到已知原因:
    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 解析任务完全交给系统进程。
    ↓↓
    不再卡顿。直到关闭浏览器重新打开为止。
    eason1874
        1
    eason1874  
       2022-11-11 05:09:35 +08:00
    说得太复杂, 简单来说就是现在运营商不支持安全 DNS ,所以在 chrome 设置里,要么关闭“使用安全 DNS”,要么开启并填写自定义安全 DNS ,不要选择“使用您当前的服务提供商”
    straywarrior
        2
    straywarrior  
       2022-11-12 22:39:34 +08:00
    遇到了相似的问题。Chrome 启动时 DNS 走的是 UDP ,此时一切正常。一会儿之后 Chrome 的 DNS 模式切换成了 TCP ,但是我的路由器似乎对 TCP 模式的 DNS 请求返回结果有问题(抓包确认路由器返回的是路由器自己的地址),Chrome 就跪了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2754 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:59 · PVG 16:59 · LAX 00:59 · JFK 03:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.