该程序是用C++编写的,它为网页编制索引,因此所有域都是来自网络的随机域名。奇怪的部分是dns fail
/not found
百分比很小(> 5%)。卷曲缓慢多线程dns
这里是PMP堆栈跟踪:
3886 __GI___poll,send_dg,buf=0xADDRESS,__libc_res_nquery,__libc_res_nquerydomain,__libc_res_nsearch,_nss_dns_gethostbyname3_r,gaih_inet,__GI_getaddrinfo,Curl_getaddrinfo_ex
601 __GI___poll,Curl_socket_check,waitconnect,singleipconnect,Curl_connecthost,ConnectPlease,[email protected]=0xADDRESS),Curl_connect,connect_host,at
534 __GI___poll,Curl_socket_check,Transfer,at,getweb,athread,start_thread,clone,??
498 nanosleep,__sleep,athread,start_thread,clone,??
50 __GI___poll,Curl_socket_check,Transfer,at,getweb,getweb,athread,start_thread,clone,??
15 __GI___poll,Curl_socket_check,Transfer,at,getweb,getweb,getweb,athread,start_thread,clone
7 nanosleep,usleep,main
为何会出现在_nss_dns_gethostbyname3_r
这么多线程?我能做些什么来加速它。
难道是因为我使用curl的默认同步DNS解析器与CURLOPT_NOSIGNAL
?
该程序运行在英特尔I7(8核心HT),16GB RAM,Ububtu 12.10上。
带宽从6MB/s(ISP限制) - > 2MB/s以不规则的间隔变化,有时甚至会降至几个100KB/s。
所有设置都是默认的,我只是增加了一些DNS服务器和设置他们转动。我已经测试了多达2000个dns查询/ s的系统,并且都很好,但似乎curl可能会以不同的方式处理dns。我如何判断curl是否要求权威性的答案?我也可以指定不要求IPV6(AAAA),因为我的网络还不支持它。 – 2013-04-15 16:39:54
什么是“邻居递归DNS服务器”?也可以扩展查找预先的方法吗? – 2013-04-15 16:41:10