Я просто следующий метод для создания соединения в ES:
public static Client getClient() {
if (client == null) {
synchronized (mutex) {
settings = ImmutableSettings.settingsBuilder().put(CONFIG_CLUSTER_NAME, CLUSTER_NAME).build();
client = new TransportClient(settings);
for (String address : transportAddress ) {
((TransportClient) client).addTransportAddress(new InetSocketTransportAddress(address, transportPort));
}
logger.info("Elastic search client initialized");
}
}
logger.info("Returning the existing client");
return client;
}
Но для этого приложения, когда я запустил netstat на этом хосте, я увидел много открытых подключений:
tcp 0 0 ::ffff:*.*.*.*:59380 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:48829 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:42944 ::ffff:*.*.*.*:9300 TIME_WAIT -
tcp 0 0 ::ffff:*.*.*.*:42838 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:8080 ::ffff:*.*.*.*:57649 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:55154 ::ffff:*.*.*.*:3306 ESTABLISHED 6552/java
tcp 0 1 ::ffff:*.*.*.*:36889 ::ffff:*.*.*.*:9300 FIN_WAIT1 -
tcp 0 0 ::ffff:*.*.*.*:42829 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:37169 ::ffff:*.*.*.*:9300 TIME_WAIT -
tcp 0 0 ::ffff:*.*.*.*:59390 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:58283 ::ffff:*.*.*.*:9300 TIME_WAIT -
tcp 0 0 ::ffff:*.*.*.*:59383 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 0 ::ffff:*.*.*.*:55855 ::ffff:*.*.*.*:9300 TIME_WAIT -
tcp 0 0 ::ffff:*.*.*.*:48823 ::ffff:*.*.*.*:9300 ESTABLISHED 6552/java
tcp 0 1 ::ffff:*.*.*.*:36884 ::ffff:*.*.*.*:9300 FIN_WAIT1 -
Я удалил ip с .... Но открытых соединений гораздо больше, чем это.
Вопросы:
Как вручную закрыть все эти соединения?
Есть ли ошибка при создании подключения?
Иногда, даже если ES работает и соединение также создается из java-приложения, оно не получает никакого ответа от ES. После перезапуска Java-приложения оно возвращает результат для того же запроса. Такое ощущение, что существующая связь стала. Поэтому, когда я перезапускаю приложение, оно создает новое соединение. И я снова начинаю получать ответы. Через некоторое время, как только он остановится. Как мне это проанализировать?