Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

Как выжать 1 000 000 RPS

Бэкенд, теория программирования

Низкоуровневые оптимизации

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Целевая аудитория

Кто код пишет, ну или просто байки из склепа послушать любит.

Тезисы

Расскажу, как мы в порядке эксперимента выжимали 1 миллион запросов в секунду из 1 физического сервера и СУБД, никогда при этом НЕ рассчитанной на именно такой workload (спойлер: СУБД всё ещё Сфинкс).

* Почему выжимали именно ~1 миллион (а не ~0.1 или ~10м).
* В каких местах обнаружились тормоза (спойлер: в разных и поначалу несколько удивительных).
* Как получилось подлечить 3+ места с разумной трудоемкостью и немедленно закатить эти успехи в бой (тизеры: не обошлось без пары строчек ассемблера, причем, что удивительно, сервер Intel, а ассемблер понадобился ARM; не обошлось без легких лок-фри-фокусов; не обошлось без переписывания простеньких системных вызовов вручную и прочей легкой наркомании).
* Чего в итоге получилось.
* Где ещё есть известные диоды, которые уже так просто не залечить.
* Ну и совсем вкратце — как теоретически атаковать следующие вершины (10+ миллионов RPS).

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

Авито, Sphinx

В 2022 году делает инфраструктуру поиска в Авито, а в самом низу там черепахи, слоны и обратно Сфинксы.

Видео