[Третья годовщина ES] Настройка Elasticsearch
[Третья годовщина ES] Настройка Elasticsearch

1. Предыстория

Недавно я работал над оптимизацией запросов к большим данным для некоторых предприятий компании. Объем данных составляет примерно ежедневно110миллиардыdocо,И обычно необходимо провести некоторую обработку данных за последние два дня.,Время ответа на запрос относительно велико,Поэтому необходимо оптимизировать запросы времени ответа API.

Но вархитектурный уровеньс самого началаmapping、Количество осколков、Были определены различные конфигурации, такие как узлы.,Некоторые модификации оказывают большее влияние на данные.,Таким образом, мы можем провести лишь некоторую оптимизацию в некоторых других аспектах.

Основываясь на использовании Es в предыдущей работе, я суммировал следующие предложения по оптимизации Es или то, что вам следует знать перед созданием кластера Es. Создавайте конфигурации, которые подходят вашему собственному бизнесу, с самого начала настройки, а не дожидайтесь возникновения проблем. во время поиска. Оптимизируйте еще раз. На данный момент возможностей для оптимизации не так много.

В основном оптимизируют по следующим аспектам:

2. Тюнинг

архитектурный уровень

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

  • Общий объем бизнес-данных и ежедневный прирост
  • Параллелизм запросов и QPS
  • Пиковый объем запросов

2. Чем больше узлов, тем лучше увеличится давление на главный узел.

3. Больше осколков не значит лучше,отdeep pageing С точки зрения, чем больше сегментов, тем больше накладные расходы JVM, тем больше нагрузка на пересылку на узел балансировки нагрузки (координации) и тем медленнее скорость запросов. Чем больше один шард, тем лучше. Вообще говоря, размер одного шарда контролируется на уровне 30-50 ГБ.

4. Оптимизация MPping:

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

Написать настройку производительности

1. Увеличьте интервал времени очистки, чтобы уменьшить частоту записи данных на диск и уменьшить количество операций ввода-вывода на диске.

2、Увеличиватьrefresh_intervalзначение параметра,Цель состоит в том, чтобы уменьшитьsegmentСоздание файлов,уменьшатьsegmentизmergeчастота,mergeпроизошло вjvmсерединаиз,может привести кfull GC,УвеличиватьrefreshСократит поискизв реальном времени。

3、УвеличиватьBufferразмер,Суть также в том, чтобы уменьшитьrefreshизвременной интервал,из-за причиненияsegmentСоздание файлаиз Причина не только во временном пороге,кромеbufferРазмер пространства,Он будет создан, когда он заполнится.。 Минимум по умолчанию 48MB < значение по умолчанию 10% места в куче < Максимум по умолчанию не ограничен

4. Старайтесь контролировать запись больших пакетов данных в периоды небольшого количества запросов на получение. Чем более концентрированы большие пакеты запросов на запись, тем лучше.

  • Во-первых, уменьшить высвобождение ресурсов между чтением и записью и разделить чтение и запись;
  • Во-вторых, когда количество запросов на получение данных очень мало, шарды реплик можно уменьшить или даже полностью удалить, а автоматическое создание сегментов можно отключить для достижения эффективного использования памяти, поскольку наличие реплик приведет к частой синхронизации данных. между главным и подчиненным. Значительно увеличивает использование ресурсов сервера.

5. В ОС происходит fsync данных Lucene. кэш, его нужно отдать ОС cacheЗарезервировать достаточноиз Внутриотразмер,Любой, кто разбирается в настройке JVM, должен быть с этим знаком.,У меня есть некоторый опыт написания об этом раньше,Можно обратиться к。Сбор мусора и настройка JVM

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

7. ignore_above: зарезервированная длина поля, чем меньше, тем лучше.

8. Настройте поле _source и выполните фильтрацию по включению и исключению.

9. Магазин. Откройте еще одно место для хранения данных, чтобы сэкономить трафик.

Примечание. Для источника установлено значение false.,метаданные не сохраняются,Можно сохранить диск,и не влияет на поиск。но отключен_sourceНадо дважды подумать, прежде чем действовать:

  1. update,update_by_queryиreindexНет в наличии。
  2. Выделение отключено
  3. reindexНеверный,Могло быть измененоизmappingНекоторые параметры не могут быть изменены,и не могу обновить индекс
  4. Невозможно просмотреть метаданные и совокупные поисковые запросы.
  5. Влияет на возможность аварийного восстановления индекса.

10. Отключить поле _all: поле _all содержит термин после сегментации слов всех полей. Его функция заключается в извлечении данных из всех полей без указания конкретных полей при поиске. До версии ES 6.0 его необходимо закрывать вручную.

11. Отключите index_options (используйте с осторожностью, высокопроизводительные операции): настройки слова используются для определения того, какой контент будет добавлен в файлы инвертированного индекса во время индексирования, например TF, docCount, postion, offsets и т. д. Параметры, которые уменьшают этот параметр, могут быть уменьшены. Загрузка ЦП при создании индекса. Однако в реальных сценариях трудно определить, будет ли бизнес использовать эту информацию, если только вы не уверены, что она не будет использоваться в начале. , удалять его не рекомендуется.

Настройка скорости поиска

1、Запрещатьswap

2、использоватьfilterзаменятьquery

3. Избегайте глубокого пейджинга,Избегайте слишком большого размера одностраничных данных.,Можно обратиться к Байду или Таобаоизупражняться。esПредусмотрено два решенияscroll searchиsearch after

4. Обратите внимание на использование типа индекса.

5. Избегайте использования разреженных данных

6. Избегайте сильной связи бизнеса с одним индексом

7. Соглашение об именах

8. Архитектурный проект разделения горячей и холодной воды.

9、fielddata:Упреждающая индексация при поиске,doc_valueдляindex Индекс времени вперед.

10、enabled:Создавать ли инвертированный индекс。

11、doc_values:форвардный индекс,Для полей, не требующих агрегации,Отключение прямой индексации экономит ресурсы.,Улучшить скорость запросов

12. Включите адаптивный выбор реплик (ARS), который поддерживается в версии 6.1 и включен по умолчанию в 7.0.

Оптимизация оборудования

Конфигурация es по умолчанию — очень разумная конфигурация по умолчанию.,В большинстве случаев никаких изменений не требуется.,Если вы не понимаете смысл определенной конфигурации,Изменение конфигурации по умолчанию без проверки,может вызвать серьезныеизв результате。напримерmax_result_windowЭта настройка,Значение по умолчанию: 1 Вт.,Этот параметр определяет максимальный объем данных, возвращаемых на страницу данных подкачки.,Изменить необдуманнодля Большие значения приведут кOOM。ESникакой серебряной пули,Невозможно существенно улучшить производительность ES путем изменения определенной конфигурации.,Обычно большинство настроек в заводской конфигурации уже оптимальны.,Есть лишь несколько настроек, связанных с конкретным бизнесом.,Лучшая конфигурация по умолчанию не может быть задана заранее.,Возможно, их придется установить вручную. О файлах конфигурации,Если вы не до конца понимаете смысл конфигурации,Не изменяйте его по своему желанию.

Распределение кучи jvm: 1 ГБ по умолчанию в версии 7.6,Это значение слишком мало,может легко привести кOOMJvm heapразмер不要超过物理Внутри存из50%,Максимальный размер не должен превышать 32 ГБ (сжатый oop), тем больше памяти он может использовать для своего внутреннего кэша, но тем меньше памяти доступно операционной системе для использования для кэша файловой системы. Чрезмерная куча приведет к увеличению времени сборки мусора.

  • узел: i. Для узлов с одинаковой ролью избегайте использования сильно различающихся конфигураций серверов. ii. Избегайте использования «сверхбольших» серверов (SS: Super Server), таких как 128-ядерный процессор, 1 ТБ памяти и 2 ТБ твердотельного накопителя. Это может привести к большой трате ресурсов. iii Для одной и той же конфигурации лучше использовать меньше физических машин, чем больше виртуальных машин. Например, пять физических машин с 4 ядрами 16G лучше, чем 10 или даже 11 виртуальных машин с 2 ядрами 8G. Это не только проблема самой виртуальной машины, которая может потреблять часть производительности, но также связана с проблемами безопасности данных. iv. Избегайте развертывания нескольких узлов на одном сервере, что усложнит управление кластером.
  • Память: В зависимости от объема бизнеса требования к памяти также различаются. Как правило, для производства рекомендуется не менее 16 ГБ. ES относительно зависит от памяти и потребляет много памяти. Память даже более важна для ES, чем ЦП, поэтому даже для предприятий с небольшим объемом данных, чтобы обеспечить стабильность службы и соответствовать требованиям. потребности бизнеса. Согласно предположению, нам все равно необходимо рассмотреть вопрос об оставлении не менее 20% избыточной производительности. Вообще говоря, согласно индексу миллионов, десятков миллионов и миллиардов данных, память, которую мы выделяем каждому узлу, составляет 16 ГБ/32 ГБ/64 ГБ, что достаточно. Если память слишком велика, экономическая эффективность будет не такой. высокий.
  • диск: Для ES диск может быть самым важным, поскольку на нем хранятся данные. Конечно, упомянутый здесь диск относится к производительности диска. Производительность диска часто является узким местом производительности оборудования и самым коротким звеном в эффекте бочки. Приложения ES могут столкнуться с необходимостью непрерывного чтения и записи больших объемов данных. В производственной среде можно рассмотреть возможность разделения горячих и холодных узлов. «Горячие узлы» используют твердотельные накопители для хранения, что может значительно повысить производительность системы; холодные данные хранятся на механических жестких дисках для снижения затрат.
  • ПРОЦЕССОР: Можно сказать, что ЦП является наиболее важным аппаратным обеспечением для компьютера, но для ES это может быть не та конфигурация, от которой он больше всего зависит, поскольку улучшение конфигурации ЦП может не принести столь же прямого и значительного преимущества в производительности, как улучшение диска или памяти. конфигурация. Конечно, это не означает, что производительность ЦП не важна. Это просто означает, что при определенном бюджете затрат на оборудование следует тратить больше средств на диск и память. Вообще говоря, ЦП одного узла начинается с 4 ядер, а узлы с разными ролями имеют разные требования к ЦП. ЦП сервера не требует высокой одноядерной производительности. Больше ядер и потоков означает более высокие возможности одновременной обработки. В настоящее время стали обычным явлением конфигурации ПК с 8 ядрами, не говоря уже о серверах.
  • сеть: ES по своей сути является распределенной, а распределенная система ES основана на одноранговой сети. Связь между узлами очень частая, и задержка губительна для пользовательского опыта ES. Поэтому для ES сеть с низкой задержкой. очень необходимо. Поэтому очень нежелательно использовать несколько центров обработки данных для расширения региона. ES может допускать кластеры с несколькими компьютерными залами, несколькими средами интрасети и поддерживать развертывание в разных зонах доступности, но не может единовременно создавать кластеры из нескольких компьютерных залов. происходит сбой в сети, кластер может напрямую GG. Даже если нормальная работа сервиса может быть гарантирована, дополнительные затраты на поддержание такого кластера (единого кластера по регионам) могут оказаться гораздо меньшими, чем дополнительные выгоды, которые он приносит.
  • Кластерное планирование: не существует лучшей конфигурации, есть только наиболее подходящая конфигурация.
  • Перед настройкой кластера,Сначала ты должен это понять,тыES clusterизиспользоватьглазизчто такое?В каких сценариях он в основном используется?,Например, он используется для хранения журналов транзакций.,Или ищите по сайту,Или для совокупного анализа данных. Для различных сценариев применения,Должны быть указаны различные схемы оптимизации.
  • Сколько конфигураций (тип памяти/тип ввода-вывода/тип вычислений) необходимо для кластера, а также количество, необходимое для каждой конфигурации, обычно необходимо согласовывать с эксплуатацией продукта, а также с тестированием эксплуатации и обслуживания. Они зависят от объема бизнеса и условий эксплуатации. пропускная способность сервера, и остается определенное количество времени.
  • Разумная конфигурация кластера ES должна иметь не менее 5 серверов.,избегатьразделенный мозгне могу избрать новогоизMasterузелиз Состояние,Кроме того, могут понадобиться еще какие-то отдельные узлы,Например, Kibana, Logstash и т.п. в системе ELK.
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.