V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oldcai
V2EX  ›  DNS

较高概率 DNS lookup failed,如何解决/缓解

  •  
  •   oldcai · 2017-05-05 14:07:41 +08:00 · 7190 次点击
    这是一个创建于 2795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题

    通过应用内加入 newrelic 探针监控,发现公司现在应用的域名解析有时间段有高于20%的失败率

    尝试

    很早之前询问过 dnspod 客服,说是即使付费服务也不能解决这个问题,

    客服也没告知具体原因,不太清楚是不是和运营商劫持有关。

    请问如何解决

    1. 应用内自己设定 DNS 服务器

      Android/iOS 有没有不需要用户设定,就可以在应用内自定义 DNS 解析的方案? 包括但不限于 DNS over HTTPS

    2. 是否更换 DNS 服务商可以有所缓解?

      观察了其他一些服务,包括友盟统计、讯飞语音都有大量 DNS 解析失败。 微信 SDK 的流氓统计 pingma.qq.com 倒是很少出现 DNS 解析问题。

    6 条回复    2017-05-07 08:32:57 +08:00
    dfc643
        1
    dfc643  
       2017-05-05 17:44:43 +08:00   ❤️ 1
    1. 可以用 HTTP DNS 解决,DNSPod 也提供该服务,还可防止 ISP 劫持。
    2. 如果是用户运营商所致换了也没有用,如果确信 DNS 服务商问题可尝试更换。

    附录:
    DNSPod HTTPDNS 参考地址: https://www.dnspod.cn/httpdns
    safeoy
        2
    safeoy  
       2017-05-05 21:19:57 +08:00   ❤️ 1
    请求频次太高了吧,可以在应用内部做 DNS 缓存吧
    oldcai
        3
    oldcai  
    OP
       2017-05-05 21:23:31 +08:00
    @safeoy
    可是一般的 http client 的封装都没有参与 DNS 的吧?
    而且操作系统中已经有 DNS 缓存了。
    oldcai
        4
    oldcai  
    OP
       2017-05-05 21:35:00 +08:00
    @dfc643 可能自己封装 HTTP 协议,还能这么做,但是如果是 https 呢,也这么从 0 开始封装就。。
    现在就是不知道如何插手到 DNS 这一环节中。
    dfc643
        5
    dfc643  
       2017-05-06 08:34:38 +08:00   ❤️ 1
    @oldcai
    HTTP 客户端直接请求解析 IP 然后附上 Host 即可,HTTPS 应该也是同理。
    另外安卓有 HTTPDNS 库可以用,至于 iOS 不太清楚。

    另外既然请求同一域名,系统又有缓存为何会高频率请求失败呢?

    附件:
    腾讯云 HttpDns 安卓 SDK: https://github.com/tencentyun/httpdns-android-sdk
    safeoy
        6
    safeoy  
       2017-05-07 08:32:57 +08:00
    @oldcai
    OS 是否有 DNS 缓存,需要看你的 OS 具体实现再确认下。
    如果 http client 没有带 dns 缓存,可以自己自己改写。
    dnspod 这种厂商对 local dns server 没有控制权,如果有频次限制的,只能自己加缓存了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2549 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:43 · PVG 18:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.