呼び出し後の応答時間が長い問題をトラブルシューティングしてHttpClient.execute(...)
います。HTTP 要求のパフォーマンスを最適化するために、クライアントですべてのことを行っていることを確認したいと思います。
ネットワークへのリクエストには 1 ~ 40 秒かかりますが、平均すると約 4 秒かかります。私は強力な WiFi 接続を使用しており、速度に問題がないため、ネットワーク接続がボトルネックになっているとは思いません。
HttpClient は次のように設定されています。
public static final int MAX_TOTAL_CONNECTION = 20;
public static final int MAX_CONNECTIONS_PER_ROUTE = 20;
public static final int TIMEOUT_CONNECT = 15000;
public static final int TIMEOUT_READ = 15000;
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
HttpParams connManagerParams = new BasicHttpParams();
ConnManagerParams.setMaxTotalConnections(connManagerParams, MAX_TOTAL_CONNECTIONS);
ConnManagerParams.setMaxConnectionsPerRoute(connManagerParams, new ConnPerRouteBean(MAX_CONNECTIONS_PER_ROUTE));
HttpConnectionParams.setConnectionTimeout(connManagerParams, TIMEOUT_CONNECT);
HttpConnectionParams.setSoTimeout(connManagerParams, TIMEOUT_READ);
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(new BasicHttpParams(), schemeRegistry);
sHttpClient = new DefaultHttpClient(cm, connManagerParams);
主観的な質問ですが、これを設定するためのより最適な方法はありますか?
HttpClient.execute(...)
への呼び出しをタイム キャプチャでラップしているため、への呼び出しの下にあるすべてのexecute(...)
部分で、平均 4 秒以上が費やされます。