qiniu / happy-dns-objc

dns library for objective c
MIT License
501 stars 83 forks source link

短时间多次调用query方法会触发多次dns查询请求吗? #38

Closed HoneyLuka closed 8 years ago

HoneyLuka commented 8 years ago

比如说在SDWebImage里配置了happydns,然后加载图片时触发了dns查询, 当然图片很多请求次数也很频繁,会不会出现一种情况:第一次dns查询还未完成,后边又多次调用了query方法,导致发出了N个指向同一个Host的dns查询请求?

longbai commented 8 years ago

目前会的,这个后边会优化处理,但一般50ms内会返回的

HoneyLuka commented 8 years ago

今天我们提交的app被苹果拒了,理由是启动崩溃。苹果还给发了崩溃日志。

原因是我在app启动的时候使用happydns去解析了一下我们的网站,也怪我没注意这块,直接在主线程里调用解析了,我们自己测试的时候这个解析确实很快,并没有出什么问题。但似乎在苹果那边解析的不是很顺利,到20秒的时候被系统干掉了。

QNResolver添加了119.29.29.29、180.76.76.76和systemResolver

下边是崩溃日志的截图

image

苹果那边给出的建议是app需要支持IPv6,所以猜测他们肯定是在IPv6环境下测试的。 但是我自己对网络这块也不太懂,所以不知道这个问题具体发生在了哪,所以把这个问题反馈上来,希望能给happydns带来一点帮助。

longbai commented 8 years ago

我这边在ipv6 情况下跑过单元测试的,能方便把你们的app 发给我测试么? 我qq 7427578,另外具体的dns 配置给下

longbai commented 8 years ago

另外 网络请求不能放在主线程

longbai commented 8 years ago

被系统杀掉的log?

HoneyLuka commented 8 years ago

app由于是公司的,所以没办法提供,这个log就是苹果给发过来的日志

longbai commented 8 years ago

QNDnsmanager 配置的dns 服务器地址给下

HoneyLuka commented 8 years ago

QNResolver添加了119.29.29.29、180.76.76.76和systemResolver 都是按照说明添加的

HoneyLuka commented 8 years ago

不知道resolver顺序有没有影响,我当时是最后添加的systemResolver

longbai commented 8 years ago

119.29.29.29 这个国外会慢一些,建议根据时区 调整dns server 顺序

HoneyLuka commented 8 years ago

好的,目前已经把系统的放在首位了happy dns是一个resolver解析成功后就不会继续使用后边的解析了吗?

longbai commented 8 years ago

是的,失败才使用后面的

HoneyLuka commented 8 years ago

明白了,多谢解答

longbai commented 8 years ago

但还是建议 使用dispatch 到非主线程来执行请求域名解析到ip, 接着进行http 请求,然后回调回来

HoneyLuka commented 8 years ago

嗯,现在已经这么做了,当时做的太随意😓