Научимся измерять нагрузку и выбирать диагностический инструмент по симптому.
Примеры course-products используют учебную схему и товар из главы 5 «Mapping и типы полей». Разборы упражнений ниже используют отдельный публичный набор тренажёра.
- Бюджет и нагрузочный профиль
- Ресурсы и шарды
- Инструмент под вопрос
Научимся измерять нагрузку и выбирать диагностический инструмент по симптому.
Курс ориентирован на Elasticsearch 9.4.3. Разборы упражнений используют публичный набор products; остальные запросы показывают отдельные учебные индексы и могут требовать подготовки или прав, недоступных в тренажёре. Ответы сокращены, score может меняться. Для расширенных функций проверяйте лицензию и вариант развёртывания.
Бюджет и нагрузочный профиль
Средняя задержка скрывает медленные хвосты: задайте p95 и p99, целевой поток запросов и допустимую долю ошибок. Набор нагрузки должен включать разные запросы, размеры ответов и одновременную индексацию. Прогретый кеш и холодный старт измеряют отдельно. Нельзя сравнивать две конфигурации по одному запросу, выполненному в разное время на разной нагрузке.
СамопроверкаРесурсы и шарды
Heap нужен структурам JVM, но файловому кешу ОС тоже требуется память. Слишком много мелких шардов увеличивает накладные расходы; слишком крупные усложняют восстановление и могут ограничивать параллелизм. Query cache хранит некоторые результаты фильтров, request cache — результаты подходящих shard-запросов. Изменение сегментов и разнообразие запросов влияют на полезность кеша.
СамопроверкаИнструмент под вопрос
_explain отвечает, почему документ получил оценку. Profile API показывает компоненты выполнения, но добавляет накладные расходы и не измеряет всю пользовательскую задержку. Slow logs помогают найти дорогие операции, метрики узлов — увидеть CPU, GC и дисковый bottleneck. Меняйте один значимый фактор, повторяйте репрезентативную нагрузку и фиксируйте качество вместе со скоростью.
Профилирование включают для диагностики, а не для каждого production-запроса.
{
"profile": true,
"query": {
"match": {
"name": "wireless"
}
}
}Как читать результат
Профилирование включают для диагностики, а не для каждого production-запроса.
Разбор на примере каталога
Если p99 вырос, а p50 почти не изменился, ищите редкие тяжёлые запросы, очереди и периодические ресурсоёмкие работы. Коррелируйте временные ряды с индексацией, merges и GC. Если медленным стал только один шаблон агрегации, общий рост heap может не быть первым решением: посмотрите кардинальность и число buckets. Если всё замедляется при росте concurrency, сначала ограничьте конкуренцию и исследуйте насыщение ресурсов. Оптимизация должна отвечать измеренному bottleneck.
СамопроверкаСамопроверка
Сначала ответьте самостоятельно, затем раскройте объяснение.
1. Почему средней задержки мало?
Она скрывает хвосты, которые видят часть пользователей.
2. Нужно ли отдать всю RAM heap?
Нет, память нужна также ОС и файловому кешу.
3. Что измеряет Profile?
Части выполнения поиска с дополнительными накладными расходами.
4. Больше шардов всегда быстрее?
Нет, растут координация и накладные расходы.
5. Как сравнивать оптимизации?
На одинаковой репрезентативной нагрузке с контролем качества и ошибок.
Краткая памятка
- Она скрывает хвосты, которые видят часть пользователей.
- Нет, память нужна также ОС и файловому кешу.
- Части выполнения поиска с дополнительными накладными расходами.
- Нет, растут координация и накладные расходы.
- На одинаковой репрезентативной нагрузке с контролем качества и ошибок.
Официальная документация
Готовы применить знания?
Подтвердите прочтение, чтобы сохранить своё место. Чтение и решение заданий учитываются отдельно в этом браузере с помощью гостевой cookie.