linux – 5秒解析延迟
发布时间:2020-12-14 02:54:20 所属栏目:Linux 来源:网络整理
导读:使用wget(curl,httplib2)我总是得到5秒的解析超时.当我做wget -4或wget -6时,这个问题没有到来.解决方案也可以使用挖掘或主机.使用/etc/resolv.conf中的“options timeout:2”可以降低延迟 这个strace输出是: 15:19:09.908234 uname({sys="Linux",node="op
使用wget(curl,httplib2)我总是得到5秒的解析超时.当我做wget -4或wget -6时,这个问题没有到来.解决方案也可以使用挖掘或主机.使用/etc/resolv.conf中的“options timeout:2”可以降低延迟
这个strace输出是: 15:19:09.908234 uname({sys="Linux",node="openkvk",...}) = 0 15:19:09.908413 socket(PF_INET,SOCK_DGRAM|SOCK_NONBLOCK,IPPROTO_IP) = 3 15:19:09.908482 connect(3,{sa_family=AF_INET,sin_port=htons(53),sin_addr=inet_addr("212.83.206.202")},16) = 0 15:19:09.908569 poll([{fd=3,events=POLLOUT}],1,0) = 1 ([{fd=3,revents=POLLOUT}]) 15:19:09.908637 sendto(3,"F3471 1 10slashdot3org 1 1",30,MSG_NOSIGNAL,NULL,0) = 30 15:19:09.908735 poll([{fd=3,events=POLLIN|POLLOUT}],5000) = 1 ([{fd=3,revents=POLLOUT}]) 15:19:09.908804 sendto(3,"F3311 1 10slashdot3org 34 1",0) = 30 15:19:09.908884 poll([{fd=3,events=POLLIN}],4999) = 1 ([{fd=3,revents=POLLIN}]) 15:19:09.911230 ioctl(3,FIONREAD,[46]) = 0 15:19:09.911308 recvfrom(3,"F347201200 1 1 10slashdot3org 1 1300f"...,2048,[16]) = 46 15:19:09.911445 poll([{fd=3,4997) = 0 (Timeout) 15:19:14.909096 poll([{fd=3,revents=POLLOUT}]) 15:19:14.909189 sendto(3,0) = 30 15:19:14.909292 poll([{fd=3,revents=POLLIN}]) 15:19:14.911569 ioctl(3,[46]) = 0 15:19:14.911644 recvfrom(3,[16]) = 46 15:19:14.911772 poll([{fd=3,4997) = 1 ([{fd=3,revents=POLLOUT}]) 15:19:14.911837 sendto(3,0) = 30 15:19:14.912051 poll([{fd=3,revents=POLLIN}]) 15:19:14.914034 ioctl(3,[106]) = 0 Tcpdump输出: tcpdump -vvv port 53 tcpdump: listening on eth0,link-type EN10MB (Ethernet),capture size 65535 bytes 15:19:09.908687 IP (tos 0x0,ttl 64,id 37830,offset 0,flags [DF],proto UDP (17),length 58) 93.157.136.242.38551 > 212.83.206.202.domain: [bad udp cksum 3576!] 18151+ A? slashdot.org. (30) 15:19:09.908852 IP (tos 0x0,id 37831,length 58) 93.157.136.242.38551 > 212.83.206.202.domain: [bad udp cksum 2876!] 18137+ AAAA? slashdot.org. (30) 15:19:09.911081 IP (tos 0x0,ttl 59,id 0,length 74) 212.83.206.202.domain > 93.157.136.242.38551: [udp sum ok] 18151 q: A? slashdot.org. 1/0/0 slashdot.org. [22m21s] A 216.34.181.45 (46) 15:19:14.909246 IP (tos 0x0,id 37832,length 58) 93.157.136.242.38551 > 212.83.206.202.domain: [bad udp cksum 3576!] 18151+ A? slashdot.org. (30) 15:19:14.911442 IP (tos 0x0,length 74) 212.83.206.202.domain > 93.157.136.242.38551: [udp sum ok] 18151 q: A? slashdot.org. 1/0/0 slashdot.org. [22m16s] A 216.34.181.45 (46) 15:19:14.911882 IP (tos 0x0,id 37833,length 58) 93.157.136.242.38551 > 212.83.206.202.domain: [bad udp cksum 2876!] 18137+ AAAA? slashdot.org. (30) 15:19:14.913906 IP (tos 0x0,length 134) 212.83.206.202.domain > 93.157.136.242.38551: [udp sum ok] 18137 q: AAAA? slashdot.org. 0/1/0 ns: slashdot.org. [3m39s] SOA ns-1.ch3.sourceforge.com. hostmaster.corp.sourceforge.com. 2011101300 14400 1800 604800 3600 (106) 像dig / host这样的工具执行类似于使用wget -4或wget -6,即时,没有任何问题. 我已经分别尝试了以下每个服务器. nameserver 2001:4018:3:12::202 nameserver 2001:4018:1:64::202 nameserver 212.83.206.202 nameserver 213.207.64.202 nameserver 8.8.8.8 nameserver 8.8.4.4 什么可能导致这种延迟? 请求的输出: 23:41:10.428217 IP (tos 0x0,id 11790,length 55) 93.157.136.242.51379 > 212.83.206.202.domain: [bad udp cksum e070!] 65414+ A? vircon.nl. (27) 23:41:10.430442 IP (tos 0x0,length 71) 212.83.206.202.domain > 93.157.136.242.51379: [udp sum ok] 65414 q: A? vircon.nl. 1/0/0 vircon.nl. [15h59m29s] A 31.193.104.52 (43) 23:41:10.427920 socket(PF_INET,IPPROTO_IP) = 3 23:41:10.427982 connect(3,16) = 0 23:41:10.428095 poll([{fd=3,revents=POLLOUT}]) 23:41:10.428166 sendto(3,"3772061 1 6vircon2nl 1 1",27,0) = 27 23:41:10.428262 poll([{fd=3,revents=POLLIN}]) 23:41:10.430572 ioctl(3,[43]) = 0 23:41:10.430651 recvfrom(3,"377206201200 1 1 6vircon2nl 1 1300f 1 "...,1024,[16]) = 43 23:41:10.430774 close(3) wget(破碎) 23:40:13.577621 IP (tos 0x0,id 20475,length 55) 93.157.136.242.55276 > 212.83.206.202.domain: [bad udp cksum 16c!] 62764+ A? vircon.nl. (27) 23:40:13.577786 IP (tos 0x0,id 20476,length 55) 93.157.136.242.55276 > 212.83.206.202.domain: [bad udp cksum 9654!] 61847+ AAAA? vircon.nl. (27) 23:40:13.579879 IP (tos 0x0,length 71) 212.83.206.202.domain > 93.157.136.242.55276: [udp sum ok] 62764 q: A? vircon.nl. 1/0/0 vircon.nl. [22h20m8s] A 31.193.104.52 (43) 23:40:18.582490 IP (tos 0x0,id 20477,length 55) 93.157.136.242.55276 > 212.83.206.202.domain: [bad udp cksum 16c!] 62764+ A? vircon.nl. (27) 23:40:18.584709 IP (tos 0x0,length 71) 212.83.206.202.domain > 93.157.136.242.55276: [udp sum ok] 62764 q: A? vircon.nl. 1/0/0 vircon.nl. [16h21s] A 31.193.104.52 (43) 23:40:18.585163 IP (tos 0x0,id 20478,length 55) 93.157.136.242.55276 > 212.83.206.202.domain: [bad udp cksum 9654!] 61847+ AAAA? vircon.nl. (27) 23:40:18.587212 IP (tos 0x0,length 106) 212.83.206.202.domain > 93.157.136.242.55276: [udp sum ok] 61847 q: AAAA? vircon.nl. 0/1/0 ns: vircon.nl. [56m25s] SOA ns1.vircon.nl. hostmaster.vircon.nl. 2011120602 10800 3600 604800 86400 (78) 23:40:13.577353 socket(PF_INET,IPPROTO_IP) = 3 23:40:13.577417 connect(3,16) = 0 23:40:13.577502 poll([{fd=3,revents=POLLOUT}]) 23:40:13.577572 sendto(3,"365,1 1 6vircon2nl 1 1",0) = 27 23:40:13.577667 poll([{fd=3,revents=POLLOUT}]) 23:40:13.577737 sendto(3,"3612271 1 6vircon2nl 34 1",0) = 27 23:40:13.577892 poll([{fd=3,revents=POLLIN}]) 23:40:13.580007 ioctl(3,[43]) = 0 23:40:13.580105 recvfrom(3,201200 1 1 6vircon2nl 1 1300f 1 "...,[16]) = 43 23:40:13.580229 poll([{fd=3,4997) = 0 (Timeout) 23:40:18.582338 poll([{fd=3,revents=POLLOUT}]) 23:40:18.582433 sendto(3,0) = 27 23:40:18.582535 poll([{fd=3,revents=POLLIN}]) 23:40:18.584835 ioctl(3,[43]) = 0 23:40:18.584912 recvfrom(3,[16]) = 43 23:40:18.585048 poll([{fd=3,revents=POLLOUT}]) 23:40:18.585117 sendto(3,0) = 27 23:40:18.585300 poll([{fd=3,revents=POLLIN}]) 23:40:18.587325 ioctl(3,[78]) = 0 23:40:18.587394 recvfrom(3,"361227201200 1 1 6vircon2nl 34 1300f 6 "...,2005,[16]) = 78 23:40:18.587513 close(3) 解决方法
您的问题在
http://udrepper.livejournal.com/20948.html中描述,并且由IPv4和IPv6上的并行查找引起,该查找与某些DNS服务器和防火墙不兼容.
可以通过在/etc/resolv.conf中的选项中添加“single-request”来修复它,如上面提到的链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – LV状态:不可用.如何使它可用?
- LINUX实操:CentOS7下利用Cobbler安装部署CentOS
- 命令行 – 使用sed(或其他命令行)用不同的集替换一组字符
- linux – 刷新补充组成员身份而无需再次登录?
- 如何在Linux上获取android-support-v4.jar文件(来自Android
- 在Linux上通过NFS触发inotify事件?
- LINUX学习:shell的编程结构体(函数、条件结构、循环结构)
- Linux挂载光盘(使用mount命令)
- linux – 观察ALSA / Pulseaudio中的音量变化
- linux-kernel – 重新安排内核delayed_work时会发生什么