Nano Hash - криптовалюты, майнинг, программирование

Видя много открытых соединений Elasticsearch даже после использования одноэлементного шаблона

Я просто следующий метод для создания соединения в 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 с .... Но открытых соединений гораздо больше, чем это.

Вопросы:

  1. Как вручную закрыть все эти соединения?

  2. Есть ли ошибка при создании подключения?

  3. Иногда, даже если ES работает и соединение также создается из java-приложения, оно не получает никакого ответа от ES. После перезапуска Java-приложения оно возвращает результат для того же запроса. Такое ощущение, что существующая связь стала. Поэтому, когда я перезапускаю приложение, оно создает новое соединение. И я снова начинаю получать ответы. Через некоторое время, как только он остановится. Как мне это проанализировать?

30.01.2015

  • Я не понимаю, что вы имеете в виду под вопросом 3. Такое поведение возникает при перезапуске ES или вашего java-приложения? и что значит возвращает результат для того же запроса? 30.01.2015
  • Да. Когда я перезапускаю приложение Java, оно создает новое соединение с ES. После этого я получаю ответ от ES. Такое ощущение, что предыдущее соединение устарело. 30.01.2015
  • Можете ли вы показать, как вы делаете запросы? 30.01.2015

Ответы:


1

Elasticsearch создает несколько соединений с каждым узлом (это обычное дело в клиент-серверных приложениях).

В более ранних версиях ES было три разных класса соединений:

  • Низкий: соединения для пакетно-ориентированных API с высокой полезной нагрузкой, таких как массовые операции.
  • Med: соединения для обычного поиска / одиночного индекса документов
  • Высокий: предназначен для операций, основанных на состоянии.

Затем добавили ping, и теперь у ES 5 типов соединений (их можно посмотреть здесь):

  • Восстановление: для восстановления индексов.
  • Bulk: для массовых операций с низким приоритетом.
  • Reg: для обычных операций в виде запросов.
  • Состояние: для операций на основе состояния.
  • Ping: для проверки связи между экземплярами (например, для обнаружения сбоев).

Вы можете управлять количеством каждого соединения на узел при создании клиента транспорта с настройкой с префиксом конфигурации transport.connections_per_node. Так, например, вы можете изменить количество каналов, используемых для обычных операций, с помощью transport.connections_per_node.reg.

30.01.2015

2

Простой способ соединить поиск Elastic и Java через

Client desclient=null;

// Применение настройки эластичного поиска

  Settings settingsdesc = ImmutableSettings.settingsBuilder().put("cluster.name","esclustername").build(); desclient = new TransportClient(settingsdesc).addTransportAddress(new InetSocketTransportAddress("xx.xx.xx.xx",9300));

//Закрыть соединение

desclient.close();
26.02.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..