Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dnsmasq不支持这配置大量server记录的 #227

Open
gmd20 opened this issue Oct 31, 2018 · 27 comments
Open

dnsmasq不支持这配置大量server记录的 #227

gmd20 opened this issue Oct 31, 2018 · 27 comments

Comments

@gmd20
Copy link

gmd20 commented Oct 31, 2018

看了dnsmasq的源码,servers的域名匹配查找,都是遍历一个个的顺序查找的。
如果数目多了性能就下降的。

@zw963
Copy link

zw963 commented Oct 31, 2018

有什么较好的替代方案吗?

@felixonmars
Copy link
Owner

看了dnsmasq的源码,servers的域名匹配查找,都是遍历一个个的顺序查找的。
如果数目多了性能就下降的。

目前在我自用的机器和几台软路由上CPU占用峰值也只有 5%,还可以接受。欢迎提出更好的替代方案,或者向 dnsmasq 提交改进。

@xlighting2017
Copy link
Contributor

有人做过
代码: https://github.com/infinet/dnsmasq
好像原版作者不太想merge,因为是老代码
讨论: https://www.v2ex.com/t/172010

@gmd20
Copy link
Author

gmd20 commented Nov 28, 2018

有人做过
代码: https://github.com/infinet/dnsmasq
好像原版作者不太想merge,因为是老代码
讨论: https://www.v2ex.com/t/172010

他那个改动太大,一般人是不太愿意合并。

@gmd20
Copy link
Author

gmd20 commented Nov 28, 2018

看了dnsmasq的源码,servers的域名匹配查找,都是遍历一个个的顺序查找的。
如果数目多了性能就下降的。

目前在我自用的机器和几台软路由上CPU占用峰值也只有 5%,还可以接受。欢迎提出更好的替代方案,或者向 dnsmasq 提交改进。

一般个人用应该是没啥问题

@angusding
Copy link

首先,dnsmasq是支持大量server记录的,只是随着数量的增加,性能会严重下降。
其次,既然dnsmasq官方不能整合server参数的hash算法,那么只能两种方式解决:
1.使用修改server查询算法的dnsmasq版本。
2.使用原版的dnsmasq,但减少server的记录数量。可以考虑维护一个精简的list,收集最常用的top 500/1000/5000/10000 ……的域名范围,当然这也需要很大的工作量。我试过15000左右的域名列表的性能还不错,即使在mips平台上也没有太明显的延迟。其实1000个域名的数量就能满足绝大多数人的日常使用了,一般会命中90%(甚至更多)以上。所以都可以考虑创建分级的list来满足不同人的需求。
第三,我觉得新开的cdn-testlist.txt很好,很多时候我们并不需要预先设置好参数的dnsmasq配置文件。因为不是每个人用114的效果都是最佳的。而有一个域名列表可以根据自己的需要来灵活设置。

@PHCSJC
Copy link

PHCSJC commented Jan 7, 2019

我一直在用infinet修改版的dnsmasq,没遇到什么BUG,大胆的去用吧。

@ntgeralt
Copy link

114.114.114.114 2019年初才瘫痪过一次。我这里ping阿里腾讯DNS都是个位数,114 40ms

@wi1dcard
Copy link
Contributor

wi1dcard commented Jun 19, 2019

114.114.114.114 2019年初才瘫痪过一次。我这里ping阿里腾讯DNS都是个位数,114 40ms

你可以修改 install.sh 的 SERVER 变量,自己指定 DNS 服务器。

另外,看 ping 延迟其实不够准确,使用 dig 看 DNS Query 的响应时间更加具有参考价值。

@missdeer
Copy link

感谢肥猫大大,我是在CoreDNS上用这份列表的,家用凑合。
编译修改版本:https://github.com/missdeer/coredns_custom_build
生成配置文件:https://gist.github.com/missdeer/5c7c82b5b67f8afb41cfd43d51b82c2d

@felixonmars
Copy link
Owner

供大家参考:我自己已经全部换到 smartdns 了。资源占用少得多,而且有测试多 DNS 返回结果 IP 哪个更快的功能,实际使用效果很好。

@wstxwd007
Copy link

供大家参考:我自己已经全部换到 smartdns 了。资源占用少得多,而且有测试多 DNS 返回结果 IP 哪个更快的功能,实际使用效果很好。

可以考虑做个smartdns用的chinalist,基本就在原来的文件基础上改下格式就能用了

@felixonmars
Copy link
Owner

供大家参考:我自己已经全部换到 smartdns 了。资源占用少得多,而且有测试多 DNS 返回结果 IP 哪个更快的功能,实际使用效果很好。

可以考虑做个smartdns用的chinalist,基本就在原来的文件基础上改下格式就能用了

已经有很久了,make 一下即可:
https://github.com/felixonmars/dnsmasq-china-list/blob/master/Makefile#L19

@heiher
Copy link

heiher commented Sep 19, 2021

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

@felixonmars
Copy link
Owner

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

看起来是,建议不要用 dnsmasq 2.86。
我自己一直在用 smartdns,已经很久没关注 dnsmasq 的问题了……

@heiher
Copy link

heiher commented Sep 19, 2021

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

看起来是,建议不要用 dnsmasq 2.86。
我自己一直在用 smartdns,已经很久没关注 dnsmasq 的问题了……

看了一下最新的dnsmasq的源代码,真是神了,server list是单向链表,而且没有tail记录指针,遍历accelerated-domains向server list插入新记录要先foreach list找到tail节点。

还是先看看smartdns吧……

@heiher
Copy link

heiher commented Sep 30, 2021

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

预计2.87修复:https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=eb88eed1fc8ed246e9355531c2715fa2f7738afc;hp=8312a3ba4f06141647e86a2c5c4ccfb2e32582ab

@leonanu
Copy link

leonanu commented Sep 30, 2021

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

预计2.87修复:https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=eb88eed1fc8ed246e9355531c2715fa2f7738afc;hp=8312a3ba4f06141647e86a2c5c4ccfb2e32582ab

换到 smartdns 就很舒服了。

@gmd20
Copy link
Author

gmd20 commented Oct 1, 2021

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

预计2.87修复:https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=eb88eed1fc8ed246e9355531c2715fa2f7738afc;hp=8312a3ba4f06141647e86a2c5c4ccfb2e32582ab
这个2.86 优化了domain的查找性能了,但感觉它实现太复杂了,没有bug才怪。

@Potterli20
Copy link

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

看起来是,建议不要用 dnsmasq 2.86。
我自己一直在用 smartdns,已经很久没关注 dnsmasq 的问题了……

用上dnsproxy了嘛?我感觉dnsproxy也是不错的东西

@gmd20
Copy link
Author

gmd20 commented Jun 30, 2022

看着是不错,支持支持的协议比较丰富,域名匹配也不是线性查找了。

@hunter-xue
Copy link

r2s, openwrt, 使用这份列表dnsmasq无法启动,没有进程,也没有端口监听...原因不详

@coolsnowwolf
Copy link

修复了

@heiher
Copy link

heiher commented Dec 20, 2022

我知道的是在修复补丁[1]之后,又被改坏了,所以v2.87不会好,表象一样,原因不同。

[1] https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commitdiff;h=eb88eed1fc8ed246e9355531c2715fa2f7738afc;hp=8312a3ba4f06141647e86a2c5c4ccfb2e32582ab

@yushijinhun
Copy link

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

dnsmasq 加载 server= 配置记录的时间复杂度是 O(n^2) 的。

@tankxiaodi
Copy link

最近不知道是不是因为dnsmasq版本更新了,集成accelerated-domains.china.conf配置后,启动时dnsmasq进程的CPU占用一直持续100%好久才能恢复,期间dns解析也不响应。不知道是否与这个问题相关?

虽然这个issue已经好几年. 但经过我反复实验 , 可以确定是v2.86的问题. 只要退到v2.79就一切正常了.

v2.79在Ubuntu 18.04里面仓库有, 如果用docker很容易就可以apt install这个版本. 如果使用较新Ubuntu的镜像,似乎都是v2.86.

@20NE
Copy link

20NE commented May 6, 2024

dnsmasq v2.90 沒有問題

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests