SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Sphinx для высоко-нагруженных и
масштабируемых проектов
Вячеслав Крюков
vkrukov@ivinco.com
Кратко о Sphinx
http://sphinxsearch.com/docs/current.html#intro
Кратко о проекте BoardReader.COM
• Поиск по форумам и социальным сетям
• >2 млн web запросов ежедневно, пик до 300 тыс/час
• >10 млрд проиндексированных документов
• >20 MySQL серверов, >15Tb сжатых данных
• Sphinx кластер
• >20 серверов
• суммарный размер индексов >3Tb
• >7 млн Sphinx запросов ежедневно
Требования к проекту
● Производительность
● Надежность
● Масштабируемость
● Доступность
● Легкость в обслуживании
Front-end
• Общедоступный поиск BoardReader.COM
• Агрегированные данные по сайтам, форумам,
тредам, топикам
• Коммерческий API к поиску по форумам, блогам,
микроблогам, новостям, картинкам, ссылкам
• Система мониторинга и управления постами
• Админки
Back-end
Масштабируемость Sphinx кластера
• Scale Up
– добавляем памяти, диски, заменяем текущие на более
мощные сервера
• Scale Out
– MySQL — шардинг, добавляем новые DB сервера
– Sphinx - дистрибутивные индексы, добавляем новые SE
сервера, до 2^64 документов
Дистрибутивные индексы Sphinx
• Запросы к нескольким индексам текущего и др
инстансов searchd
• Обращения к инстансам searchd на локальном и
удаленном серверах
• Мерж результатов, удаление дубликатов
• Рапределение ресурсов нескольких серверов
• Инкрементация данных
Конфигурация Sphinx кластера
Конфигурация Sphinx SE
• 4 инстанса searchd на одном сервере
• 4 конфигурационных файла для node{1,2,3,4}, в каждом
файле прописан свой собственный searchd
• множество типов индексов по назначению — форумные
посты, блог посты, новости, картинки, ссылки
• три типа индексов по дате заливки - 'big','3months','inc'
Конфигурация Sphinx SE
• 'big','3months','inc' sources – MySQL источники данных
• 'big','3months','inc' indexes – набор индексов
• 'big','3months' sources сохраняют состояние индексации во
вспомогательные таблицы, данные в индексах не
пересекаются
Конфигурация Sphinx SE
• индексы со всех нод заданного Sphinx SE объединяются в
спец дистрибутивном на node1:
• нужно для последующей передачи на Sphinx forwarder
• big_se01 = big_node{1,2,3,4} + 3months_node{1,2,3,4}+
inc_node{1,2,3,4}
• 3months_se01 = 3months_node{1,2,3,4} +
inc_node{1,2,3,4}
Конфигурация Sphinx forwarder
• Индексы объединяются в дистрибутивном со всех Sphinx SE
отдельно для каждого типа по дате заливки, кроме 'inc' и
каждого типа по назначению.
Оценка производительности Sphinx кластера
avg(t), sec 0.16
std(t), sec 1.01
t < 0.1 sec 85%
t < 0.3 sec 91%
t < 0.5 sec 93%
t < 0.7 sec 95%
t < 1 sec 96%
t < 3 sec 98%
t < 5 sec 99%
requests: 7881995
t — время выполнения Sphinx запроса
Так же подобные отчеты строятся для отдельных видов web запросов
Типичные проблемы
● Проблема в одном месте - проблема с
производительностью системы в целом
● Нехватка пропускной способности дисков
● Нехватка ресурсов памяти – активно используется Swap
● Нехватка ресурса CPU (встречается реже)
Оптимизация схемы распределения данных
в Sphinx кластере
• Цель - эффективность использования ресурсов
• Один инстанс searchd на Sphinx SE + многопоточность,
общий файл для всех node{1,2,3,4}
• Много индексов — нужна больше пропускная способность
дисков на чтение
• Оптимизация размера атрибутов
• Перебалансировка данных
Обновление данных
● до 100Гб новых данных в формате xml каждый день
● Обновление инрементального индекса - каждые 5 минут
● Обновление 3-х месячного индекса - раз в сутки
● Обновление большого индекса - раз в месяц, данные за 2
года
Обновление данных
• Перезаливка существующих данных
• Система мониторинга и управления постами
• Изменение некоторых атрибутов постов, в том числе для
пометки удаленных, скрытых, адултных и спамных
постов
• Добавление задания как из web интерфейса, так и из
сторонних скриптов
• Механизм очередей
Обновление данных
● indexer отнимает ресурсы по памяти и диску
● Запас места на диске для переиндексации до 50-70%
● Режим обслуживания БД MySQL
● Вместо переиндексации можно использовать мержинг
индексов
Оптимизация Sphinx запросов
● Multi-queries
● 10 web запросов – 1 Sphinx запрос
● Переключение запроса на индекс меньшего размера или на
индексы конечных нод
Балансировка данных Sphinx кластера
● Анализ лога производительности Sphinx запросов
● Оценка и перерасчет распределения данных в кластере
● Учет неравнозначности ресурсов отдельных серверов
● Переиндексация индексов, затрагиваемых
перебалансировкой
● Вместо ротации через indexer - одномоментная замена
индексов
Меры повышения производительности и
надежности
● Кеширование – HTTP, Memcache, файловый кеш
● Логи производительности и ошибок
● Мониторинг, система оповещения - nagios, Zabbix
● Автоматизация операций администрирования
● Тестирование изменений конфигурации кластера
Спасибо за внимание !
Вопросы ?

Mais conteúdo relacionado

Mais procurados

Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruOntico
 
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Ontico
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Badoo Development
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBIurii Ogiienko
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Ontico
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 

Mais procurados (20)

pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
 
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Devconf15
Devconf15Devconf15
Devconf15
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 

Destaque

масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1rit2011
 
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)AvitoTech
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахAlex Chistyakov
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Ontico
 

Destaque (6)

масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1масштабируемый Sphinx кластер. вячеслав крюков. зал 1
масштабируемый Sphinx кластер. вячеслав крюков. зал 1
 
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)"Икскод, джейсон, два скетча" Олег Фролов (Avito)
"Икскод, джейсон, два скетча" Олег Фролов (Avito)
 
Go meetup 2015 04-23
Go meetup 2015 04-23Go meetup 2015 04-23
Go meetup 2015 04-23
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
 
Допиливаем Sphinx на чистом C
Допиливаем Sphinx на чистом CДопиливаем Sphinx на чистом C
Допиливаем Sphinx на чистом C
 

Semelhante a Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков

Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres ProAndrey Fleyta
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Ontico
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruodnoklassniki.ru
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Передовой опыт создания Инфраструктуры SharePoint
Передовой опыт создания  Инфраструктуры SharePointПередовой опыт создания  Инфраструктуры SharePoint
Передовой опыт создания Инфраструктуры SharePointMichael Noel
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.Serguei Gitinsky
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, PerconaOntico
 
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)Ontico
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанкуNikolay Sivko
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Yandex
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Sergey Xek
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 

Semelhante a Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков (20)

Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres Pro
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Передовой опыт создания Инфраструктуры SharePoint
Передовой опыт создания  Инфраструктуры SharePointПередовой опыт создания  Инфраструктуры SharePoint
Передовой опыт создания Инфраструктуры SharePoint
 
Sivko
SivkoSivko
Sivko
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Sphinx
SphinxSphinx
Sphinx
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)
Поиск наоборот: материализуем результаты поиска / Николай Сивко (okmeter.io)
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанку
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"
 
Rusiem 2017_обзор
Rusiem 2017_обзорRusiem 2017_обзор
Rusiem 2017_обзор
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 

Mais de Fuenteovejuna

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert JohnsonFuenteovejuna
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Fuenteovejuna
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandFuenteovejuna
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Fuenteovejuna
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинFuenteovejuna
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandFuenteovejuna
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайFuenteovejuna
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Fuenteovejuna
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Fuenteovejuna
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Fuenteovejuna
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминFuenteovejuna
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинFuenteovejuna
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоFuenteovejuna
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений ЭльцинFuenteovejuna
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковFuenteovejuna
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoFuenteovejuna
 
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальМасштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальFuenteovejuna
 

Mais de Fuenteovejuna (20)

Facebook, Robert Johnson
Facebook, Robert JohnsonFacebook, Robert Johnson
Facebook, Robert Johnson
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
 
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice PellandShared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
Shared Personalization Service - How To Scale to 15K RPS, Patrice Pelland
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
 
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий БородинПрактическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
 
Social Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice PellandSocial Monitoring Tool codename Looking Glass, Patrice Pelland
Social Monitoring Tool codename Looking Glass, Patrice Pelland
 
Профилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон ГрицайПрофилирование памяти в приложениях на Python, Антон Грицай
Профилирование памяти в приложениях на Python, Антон Грицай
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
Сервер-агрегатор на python (аля Xscript FEST), Сумин Андрей, Сабуренков Михаи...
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
Некоторые аспекты влияния сходимости протокола BGP на доступность сетевых рес...
 
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
Тандемные DDoS-атаки. Проблематика уязвимостей в спецификации TCP IP (фундаме...
 
Динамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр ЛяминДинамика DDoS-атак в России, Александр Лямин
Динамика DDoS-атак в России, Александр Лямин
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима НиконенкоМониторинг XXI-век, Алиса Смирнова, Дима Никоненко
Мониторинг XXI-век, Алиса Смирнова, Дима Никоненко
 
Native Client, Евгений Эльцин
Native Client, Евгений ЭльцинNative Client, Евгений Эльцин
Native Client, Евгений Эльцин
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий Востриков
 
Real time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav VorozhkoReal time indexes in Sphinx, Yaroslav Vorozhko
Real time indexes in Sphinx, Yaroslav Vorozhko
 
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей НековальМасштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
Масштабируемая система голосования на базе PostgreSQL PgQ, Сергей Нековаль
 

Último (9)

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 

Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков

  • 1. Sphinx для высоко-нагруженных и масштабируемых проектов Вячеслав Крюков vkrukov@ivinco.com
  • 3. Кратко о проекте BoardReader.COM • Поиск по форумам и социальным сетям • >2 млн web запросов ежедневно, пик до 300 тыс/час • >10 млрд проиндексированных документов • >20 MySQL серверов, >15Tb сжатых данных • Sphinx кластер • >20 серверов • суммарный размер индексов >3Tb • >7 млн Sphinx запросов ежедневно
  • 4. Требования к проекту ● Производительность ● Надежность ● Масштабируемость ● Доступность ● Легкость в обслуживании
  • 5. Front-end • Общедоступный поиск BoardReader.COM • Агрегированные данные по сайтам, форумам, тредам, топикам • Коммерческий API к поиску по форумам, блогам, микроблогам, новостям, картинкам, ссылкам • Система мониторинга и управления постами • Админки
  • 7. Масштабируемость Sphinx кластера • Scale Up – добавляем памяти, диски, заменяем текущие на более мощные сервера • Scale Out – MySQL — шардинг, добавляем новые DB сервера – Sphinx - дистрибутивные индексы, добавляем новые SE сервера, до 2^64 документов
  • 8. Дистрибутивные индексы Sphinx • Запросы к нескольким индексам текущего и др инстансов searchd • Обращения к инстансам searchd на локальном и удаленном серверах • Мерж результатов, удаление дубликатов • Рапределение ресурсов нескольких серверов • Инкрементация данных
  • 10. Конфигурация Sphinx SE • 4 инстанса searchd на одном сервере • 4 конфигурационных файла для node{1,2,3,4}, в каждом файле прописан свой собственный searchd • множество типов индексов по назначению — форумные посты, блог посты, новости, картинки, ссылки • три типа индексов по дате заливки - 'big','3months','inc'
  • 11. Конфигурация Sphinx SE • 'big','3months','inc' sources – MySQL источники данных • 'big','3months','inc' indexes – набор индексов • 'big','3months' sources сохраняют состояние индексации во вспомогательные таблицы, данные в индексах не пересекаются
  • 12. Конфигурация Sphinx SE • индексы со всех нод заданного Sphinx SE объединяются в спец дистрибутивном на node1: • нужно для последующей передачи на Sphinx forwarder • big_se01 = big_node{1,2,3,4} + 3months_node{1,2,3,4}+ inc_node{1,2,3,4} • 3months_se01 = 3months_node{1,2,3,4} + inc_node{1,2,3,4}
  • 13. Конфигурация Sphinx forwarder • Индексы объединяются в дистрибутивном со всех Sphinx SE отдельно для каждого типа по дате заливки, кроме 'inc' и каждого типа по назначению.
  • 14. Оценка производительности Sphinx кластера avg(t), sec 0.16 std(t), sec 1.01 t < 0.1 sec 85% t < 0.3 sec 91% t < 0.5 sec 93% t < 0.7 sec 95% t < 1 sec 96% t < 3 sec 98% t < 5 sec 99% requests: 7881995 t — время выполнения Sphinx запроса Так же подобные отчеты строятся для отдельных видов web запросов
  • 15. Типичные проблемы ● Проблема в одном месте - проблема с производительностью системы в целом ● Нехватка пропускной способности дисков ● Нехватка ресурсов памяти – активно используется Swap ● Нехватка ресурса CPU (встречается реже)
  • 16. Оптимизация схемы распределения данных в Sphinx кластере • Цель - эффективность использования ресурсов • Один инстанс searchd на Sphinx SE + многопоточность, общий файл для всех node{1,2,3,4} • Много индексов — нужна больше пропускная способность дисков на чтение • Оптимизация размера атрибутов • Перебалансировка данных
  • 17. Обновление данных ● до 100Гб новых данных в формате xml каждый день ● Обновление инрементального индекса - каждые 5 минут ● Обновление 3-х месячного индекса - раз в сутки ● Обновление большого индекса - раз в месяц, данные за 2 года
  • 18. Обновление данных • Перезаливка существующих данных • Система мониторинга и управления постами • Изменение некоторых атрибутов постов, в том числе для пометки удаленных, скрытых, адултных и спамных постов • Добавление задания как из web интерфейса, так и из сторонних скриптов • Механизм очередей
  • 19. Обновление данных ● indexer отнимает ресурсы по памяти и диску ● Запас места на диске для переиндексации до 50-70% ● Режим обслуживания БД MySQL ● Вместо переиндексации можно использовать мержинг индексов
  • 20. Оптимизация Sphinx запросов ● Multi-queries ● 10 web запросов – 1 Sphinx запрос ● Переключение запроса на индекс меньшего размера или на индексы конечных нод
  • 21. Балансировка данных Sphinx кластера ● Анализ лога производительности Sphinx запросов ● Оценка и перерасчет распределения данных в кластере ● Учет неравнозначности ресурсов отдельных серверов ● Переиндексация индексов, затрагиваемых перебалансировкой ● Вместо ротации через indexer - одномоментная замена индексов
  • 22. Меры повышения производительности и надежности ● Кеширование – HTTP, Memcache, файловый кеш ● Логи производительности и ошибок ● Мониторинг, система оповещения - nagios, Zabbix ● Автоматизация операций администрирования ● Тестирование изменений конфигурации кластера