2016-05-25 08:58:34
昨天線上小白系統因為調用外部http接口,超時不釋放,導致頁面反應很慢,時間一長,報502錯誤。
上網查了下,502錯誤是因為服務對於客戶的請求沒有得到及時的反應,查詢日志,發現很多調http接口異常,頁面反應也很慢。
瞬間想到縮短http客戶端調用http接口的超時時間,搜到這個博客http://blog.csdn.net/xinying0424/article/details/36006383 感謝
HttpClient 4: 連接超時: 連接超時 httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000); // 或者 HttpConnectionParams.setConnectionTimeout(params,6000); 讀取超時: httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000); // 或者 HttpConnectionParams.setSoTimeout(params,60000); HttpClient 3: 連接超時: httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000); 讀取超時: httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);
發現我本來代碼里就寫了這個,只是時間配置的實在太長
private static MultiThreadedHttpConnectionManager connectionManager = null; private static int connectionTimeOut = 2000;t private static int socketTimeOut = 10000; private static int maxConnectionPerHost = 20; private static int maxTotalConnections = 20; private static HttpClient client; static { connectionManager = new MultiThreadedHttpConnectionManager(); connectionManager.getParams().setConnectionTimeout(connectionTimeOut); connectionManager.getParams().setSoTimeout(socketTimeOut); connectionManager.getParams().setDefaultMaxConnectionsPerHost(maxConnectionPerHost); connectionManager.getParams().setMaxTotalConnections(maxTotalConnections); client = new HttpClient(connectionManager); }
然后我把socketTimeOut調整為2000,本地想測試下,結果。。。
java.lang.IllegalArgumentException: host parameter is null 調用接口報錯
查了下 http://wang371134086.iteye.com/blog/1688458 竟然調用http接口沒寫http://,加上這段解決
問題解決記錄下,感謝一下博客。
http://blog.csdn.net/xinying0424/article/details/36006383
http://wang371134086.iteye.com/blog/1688458
http://blog.sina.com.cn/s/blog_a577563c01013tlz.html
http://jinnianshilongnian.iteye.com/blog/2089792
http://www.zhihu.com/question/21647204