在使用Httpclient的過程中,當訪問量增大的時候,會發現本地的連接等待時間急劇增加,例如從400ms增加到 78000ms,之前一直以為是航信系統問題,后面經過檢查才發現,原來是本地httpclient設置時,最大連接數采用了默認設置的原因,而默認的最 大連接數只有2個,所以當有大量連接需要建立時,大多數連接只有等待。后面將連接數設置修改成32個之后,這個響應時間就基本上很少出現很大的時候。
HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager(); HttpConnectionManagerParams params = httpConnectionManager.getParams(); params.setConnectionTimeout(5000); params.setSoTimeout(20000); params.setDefaultMaxConnectionsPerHost(32);//very important!! params.setMaxTotalConnections(256);//very important!! this.client = new HttpClient(httpConnectionManager); // 設置編碼 this.client.getParams().setContentCharset(CharsetHelper.GBK); this.client.getParams().setHttpElementCharset(CharsetHelper.GBK);
我們一般很容易注意到設置超時時間,例如這里的紅色部分,但是極有可能忘記設置每個主機的最大連接數(綠色),因此大家注意一下,本來是最簡單的,但也最容易被忽略。