You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Li Li <fa...@gmail.com> on 2014/04/04 09:36:44 UTC
too long dns lookup time
I am using http client 4.3.1 to crawl webpages. but I found most of
the time is used by dns look up
I use jstack many times and found all of the threads are "lookupAllHostAddr"
"Thread-9" prio=10 tid=0x00007f5174314800 nid=0xf50 runnable
[0x00007f5169ed8000]
java.lang.Thread.State: RUNNABLE
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getAllByName0(InetAddress.java:1246)
at java.net.InetAddress.getAllByName(InetAddress.java:1162)
at java.net.InetAddress.getAllByName(InetAddress.java:1098)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:44)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:102)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:357)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:214)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160)
my codes:
PoolingHttpClientConnectionManager connManager = new
PoolingHttpClientConnectionManager();
connManager.setMaxTotal(this.getMaxTotalConnection());
connManager.setDefaultMaxPerRoute(this.getMaxConnectionPerRoute());
defaultRequestConfig = RequestConfig.custom()
.setCookieSpec(CookieSpecs.BEST_MATCH)
.setExpectContinueEnabled(true)
//.setStaleConnectionCheckEnabled(true)
.setConnectTimeout(this.getConnectTimeout())
.setConnectionRequestTimeout(this.getConnectionRequestTimeout())
.setSocketTimeout(this.getReadTimeout())
.build();
HttpClientBuilder builder=HttpClients.custom();
client = builder.setConnectionManager(connManager)
.setProxy(getProxy())
.setRetryHandler(new MyHttpRequestRetryHander(retryCount))
.setDefaultRequestConfig(defaultRequestConfig)
.setUserAgent(this.getUserAgent())
.build();
10 threads share this client in a process
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org