Сбой поиска в Elastic Search с «java.io.IOException: время ожидания прослушивателя после ожидания [30000] мс» - PullRequest
0 голосов
/ 10 июля 2019

У нас есть кластер из 10 узлов, имеющий всего несколько ГБ данных.У нас есть 5 индексов (всего 28 основных шардов) и репликация 1 для каждого шарда.Вчера вечером мы удалили 2 индекса и повторно загрузили данные в эти индексы.После этого мы видим следующую ошибку при попытке прочитать данные из любого из индексов:

java.io.IOException: listener timeout after waiting for [30000] ms
at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:617) ~[rest-5.2.2.jar:5.2.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212) ~[rest-5.2.2.jar:5.2.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:184) ~[rest-5.2.2.jar:5.2.2]

Я искал на форуме Elastic Search и SO аналогичные проблемы, но предложения в основном предназначены для длительного приема пищи.или массовые обновления, которые не применимы к нашему сценарию, так как мы наблюдаем эту ошибку во время поиска.Если я пытаюсь выполнить тот же запрос с помощью команды curl, войдя в систему на одном из узлов ES, он работает без ошибок и возвращает результаты.

Это код, который мы используем для создания RestClient

public RestClient getElasticServerRestClient(String sourceESServerIp, int sourceESServerPort,
        String sourceESServerProtocol, final String userName, final String password,String resource) {
    try {
        HttpHost elasticCacheHost = new HttpHost(sourceESServerIp, sourceESServerPort, sourceESServerProtocol);
        RestClientBuilder restClientBuilder = RestClient.builder(elasticCacheHost);
        restClientBuilder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                int maxConnTotal = cacheConfigurations.getMaxTotalConnections();
                if (maxConnTotal > 0) {
                    httpClientBuilder.setMaxConnTotal(maxConnTotal);
                }
                int maxConnPerRoute = cacheConfigurations.getMaxConnectionsPerRoute();
                if (maxConnPerRoute > 0) {
                    httpClientBuilder.setMaxConnPerRoute(maxConnPerRoute);
                }

                if (userName != null && !userName.trim().isEmpty() && password != null && !password.trim().isEmpty()) {
                    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 
                    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, 
                            password));
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                }
                return httpClientBuilder;
            }
        });


        RestClient elasticServerRestClient = restClientBuilder.build();
        return elasticServerRestClient;
    }
    catch (Throwable t) {
        log.error("Error in getElasticServerRestClient", t);
        return null;
    }
}

Состояние кластера зеленое, и никаких признаков других проблем из журналов также нет.Пожалуйста, поделитесь любыми предложениями о том, как определить причину сбоя.

Спасибо и С уважением, Шобхана

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...