масштабируемый sphinx кластер. вячеслав крюков. зал 1
DESCRIPTION
TRANSCRIPT
![Page 1: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/1.jpg)
Масштабируемый Sphinx кластер
Вячеслав КрюковIvinco.com
![Page 2: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/2.jpg)
Sphinx кластер для проекта BoardReader.COM• Поисковый сервис по форумам, социальным сетям и медиа
данным• Более 30 серверов• Более 15 млрд. проиндексированных документов• Более 5 TB данных в индексах (постов форумов и блогов,
новостей, изображений, ссылок)• Более 10 млн. запросов в сутки, в пике 500 тыс. запросов в час
![Page 3: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/3.jpg)
Масштабируемость Sphinx кластера• Scale Up
Распределение данных по нескольким инстансам searchd (нодам) на одном сервере. Апгрейд сервера
• Scale OutРаспределение данных по нескольким серверам. Добавление новых серверов
• До 2^64 документов на кластер
![Page 4: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/4.jpg)
Дистрибутивные индексы Sphinx• Инструмент масштабирования кластера• Распределение запросов по нескольким индексам на локальных и
удаленных нодах• Мерж результатов, удаление дубликатов• Инкрементация данных
![Page 5: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/5.jpg)
Архитектура ноды Sphinx кластера
![Page 6: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/6.jpg)
Архитектура Sphinx кластера
![Page 7: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/7.jpg)
Конфигурация Sphinx кластера• Запрос к кластеру транслируется через Sphinx forwarder к
конечным нодам• Утилизация ресурсов многодисковых и многоядерных серверов
через настройку многопоточности searchd или нескольких нод на одном сервере (Sphinx nodes)
• 4 ступени инкрементации данных – Full, 3 Months, Week, Inc и соотв. им конечные индексы
![Page 8: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/8.jpg)
Конфигурация Sphinx кластера• Схема распределения данных кластера - привязка индексируемых
данных к списку серверов и агентов с параметрами соединения и конечными индексами
• Сохранение состояния индексации для стыковки между ступенями инкрементации данных
• Интерпретируемый конфигурационный файл• Обновление конфигурационных данных
![Page 9: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/9.jpg)
Обновление и инкрементация данных• Инкрементация данных каждые 5мин, сутки, неделю, месяц для
соотв. ступеней Inc , Week, 3 Months, Full• Запас места на диске для переиндексации до 50-70%• Перезаливка существующих данных, killlist's• Изменение атрибутов записей в индексах• Механизм очередей• Режим обслуживания БД MySQL с индексируемыми данными• Мержинг индексов вместо переиндексации
![Page 10: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/10.jpg)
Проблемы производительности• Ухудшение производительности отдельной ноды сказывается на
всем кластере• Нехватка пропускной способности дисков, ресурсов памяти –
активно используется Swap, CPU (встречается реже)
![Page 11: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/11.jpg)
Оценка производительности
avg(t): 0.32 secstd(t): 1.08 secКол-во запросов: 11828803t — время выполнения Sphinx запроса
![Page 12: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/12.jpg)
Оценка производительности
![Page 13: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/13.jpg)
Оптимизация конфигурации Sphinx кластера• Цель – получить лучшую производительность кластера на текущих
ресурсах• Уменьшение затрат на процесс индексации и сторонние задачи
(все, что кроме searchd)• Выбор оптимального количества ступеней инкрементации данных• Оптимизация размера и количества атрибутов• Перебалансировка данных
![Page 14: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/14.jpg)
Оптимизация Sphinx запросов• Цель – выполнить Sphinx запрос меньшими ресурсами• Multi-queries• 10 web запросов – 1 Sphinx запрос• Автоматизация переключения запроса на индекс меньшего
размера или на нужную ноду
![Page 15: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/15.jpg)
Когда исчерпаны текущие ресурсы
Добавляем новые серверы, делаем балансировку - если растет кол-во данных или используем межнодовую репликацию - если растет кол-во запросов
![Page 16: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/16.jpg)
Балансировка Sphinx кластера• Причина – ухудшение производительности• Ухудшение производительности отдельных нод кластера• Добавление новых серверов в кластер• Оценка объема индексируемых данных и перерасчет их
распределения в кластере• Учет неравнозначности ресурсов отдельных серверов• Переиндексация индексов, затрагиваемых перебалансировкой• Целостность процесса балансировки
![Page 17: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/17.jpg)
Дополнительные меры• Кеширование• Резервное копирование индексов Sphinx• Логи производительности и ошибок• Мониторинг, система оповещения - nagios, Zabbix• Автоматизация операций администрирования• Тестирование изменений конфигурации кластера
![Page 18: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/18.jpg)
Перспективные Sphinx фитчи• RT индексы• Изменение атрибутов записей в индексах по условию• MySql – Sphinx репликация – в работе • Встроенная в Sphinx межнодовая репликация – в планах
![Page 19: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/19.jpg)
Поздравляем Андрея Аксенова и его команду с выходом книги - "Introduction to Search with Sphinx" в
издательстве O'Reilly!
![Page 20: масштабируемый Sphinx кластер. вячеслав крюков. зал 1](https://reader030.vdocuments.pub/reader030/viewer/2022020101/547a07bfb37959442b8b4967/html5/thumbnails/20.jpg)
Спасибо за внимание!Вопросы?
[email protected]/services/www.ivinco.com/software/
www.ivinco.com/blog/