видит множество соединений CLOSE_WAIT в Ubuntu, когда я выполняю приведенную ниже команду, где 20919 - это pid tomcat.Много ли сокетов в состоянии CLOSE_WAIT вызывает большое количество открытых файлов?
sudo lsof -p 20919 |grep CLOSE_WAIT
ниже приведен код для закрытия клиентских запросов
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(30, TimeUnit.SECONDS);
builder.readTimeout(30, TimeUnit.SECONDS);
builder.writeTimeout(30, TimeUnit.SECONDS);
OkHttpClient client = builder.build();
String webServiceEndPoint = url;
Response response =null;
if (!url.matches("^(http|https)://.*$")) {
webServiceEndPoint = backendConfig.getWebServiceUri().concat(url);
}
Request request = new Request.Builder()
.url(webServiceEndPoint)
.method(method, getRequestBody(requestContext, method))
.headers(buildHeaders(headerBuilder))
.build();
try {
response = client.newCall(request).execute();
String responseBody = response.body().string();
if (response.isSuccessful()) {
if (isJsonObject(responseBody)) {
callback.onSuccess(JsonObjectBuilder.fromString(responseBody));
} else if (isJsonArray(responseBody)) {
callback.onSuccess(JsonObjectBuilder.arrayfromString(responseBody));
} else {
// logger.debug("couldn't determine response type [response : {}]", responseBody);
callback.onSuccess(responseBody);
}
} else {
callback.onError(responseBody, new SimpleStatusLine(response.code(), ""));
}
if(response!=null)response.body().close();
} catch (Exception e) {
callback.onFailure(e);
}finally{
LOG.debug("finally cleaning rsources");
if(response!=null)response.body().close();
client.connectionPool().evictAll();
}
Это, похоже, не очищает состояние CLOSE_WAIT.Я использую Tomcat 8 с Охттп 3.8.1