请教下大家,用 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 。
现有这个连接存在的时间为免太长,而且复用率多高是个问题,有无什么解决办法规避这个情况?
谢谢!
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 OP |
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 |