首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
宝塔
V2EX  ›  Linux

请教如何规避大量的 udp 类的 DNS 查询连接保持?

  •  
  •   kn007 · 2015-11-24 22:16:25 +08:00 · 3409 次点击
    这是一个创建于 1456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教下大家,用 ss -anutp |grep :53 |wc -l 得到了 1050 个连接, ESTABLISHED 状态。

    其中 310 个是 Nginx ,剩余的都是 php-fpm 发起的。

    随便举例一条

    udp ESTAB 0 0 127.0.0.1:26076 8.8.8.8:53 users:(("nginx",4867,76))

    uptime 目前已有 100 天。

    Nginx 有反代 google , php 有 gethostbyname 与 gethostbynamel 。

    现有这个连接存在的时间为免太长,而且复用率多高是个问题,有无什么解决办法规避这个情况?

    谢谢!

    14 回复  |  直到 2015-11-25 17:25:07 +08:00
        1
    wdlth   2015-11-24 23:14:46 +08:00
    把 Google 加到 hosts 里面试试,减少查询。
        2
    ncisoft   2015-11-25 04:33:27 +08:00 via Android
    udp 不是无连接的吗
        3
    ryd994   2015-11-25 06:39:31 +08:00 via Android
    你可以考虑装个 bind 或者 dnsmasq 来做缓存,/etc/resolv.conf 写 127.0.0.1
    注意只监听本地,否则就等着变成反射吧。
        4
    kn007   2015-11-25 07:31:18 +08:00
    @wdlth Google 根本不知道是哪个 ip ,有些 ip 反代了,功能就没了。所以无法。如果能 ip ,我就用 varnish 反代了。。。

    @ncisoft 鬼知道,我也奇怪

    @ryd994 有这个想法,以前也弄过,不过后来因为 dns 更新不及时,又 pass 了
        5
    datocp   2015-11-25 08:04:52 +08:00 via Android
    让 udp 快速消亡只能调整 timeout 吧,但这个 timeout 设置也不是越小越好,不然部分通讯会有问题。另外也有通过 limit 结合 reject 丢弃的,不过那种方法就会有抑制问题。目前 vps 上也是用 dnsmasq 用于 vpn 查询, drop 来自 wan 端的查询。
    修改 /etc/sysctl.conf
    net.netfilter.nf_conntrack_generic_timeout=600
    net.netfilter.nf_conntrack_udp_timeout=65
    net.netfilter.nf_conntrack_udp_timeout_stream=120
    net.netfilter.nf_conntrack_tcp_timeout_established=600
    net.netfilter.nf_conntrack_tcp_timeout_syn_sent=120
    net.netfilter.nf_conntrack_tcp_timeout_syn_recv=60
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
    net.netfilter.nf_conntrack_tcp_timeout_time_wait=120
    net.netfilter.nf_conntrack_tcp_timeout_close=10
    net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
    net.netfilter.nf_conntrack_tcp_timeout_last_ack=30
    net.ipv4.tcp_fin_timeout=30
    net.ipv4.tcp_keepalive_time=120
        6
    kn007   2015-11-25 08:22:49 +08:00
    @datocp 你这里面大部分都是 tcp 的。。。对 udp 有用么。。。

    看来还是要用 dnsmasq...
        7
    kn007   2015-11-25 08:29:45 +08:00
    @datocp 我查看了下,默认 sysctl 已经定义好了这些值了
        8
    ncisoft   2015-11-25 11:47:37 +08:00 via Android
    @kn007 据我以前的经验, udp 在实现了一次会话之后,是会出现 establish 状态的,这也不是什么大问题
        9
    ncisoft   2015-11-25 11:49:54 +08:00 via Android
    @kn007 你机器为啥不用本地服务商提供的 DNS 呢,快得多,用 8888 干毛线
        10
    kn007   2015-11-25 14:02:39 +08:00
    @ncisoft 我是美国 VPS 。。。直连 ping < 1ms
    我只是看到连接数过多,倒没觉得是大问题。
        11
    kn007   2015-11-25 14:03:14 +08:00
    @ncisoft 再说了,无论我用哪个都会有长连接。。
        12
    ryd994   2015-11-25 15:30:08 +08:00
    @kn007 缓存时间可以调
        13
    kn007   2015-11-25 16:08:39 +08:00 via Android
    @ryd994 额,你指什么? dnsmasq ?
        14
    ncisoft   2015-11-25 17:25:07 +08:00 via Android
    @kn007 这种所谓的连接命都不长
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4255 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 06:40 · PVG 14:40 · LAX 22:40 · JFK 01:40
    ♥ Do have faith in what you're doing.