SlideShare uma empresa Scribd logo
1 de 73
Крадущийся сервер,
 затаившийся диод

 Андрей Аксенов, Sphinx
КТО ЗДЕСЬ
• Зовут Андрей, резидент HL ;)
• Делал вебню, игры, поиск
• Знаю много страшных слов

• Сегодня про “скорость” в целом
• Завтра про “поиск” в целом
• Ничего нового, все украдено, explicit lyrics
Про скорость
• Как бенчмаркать
  – Как планировать эксперименты
• Как профайлить
• Как планировать емкость

• Везде подразумевается прилагательное
  “ПРАВИЛЬНО”
Часть 1
Бенчмарки
Нередкий бенчмарк


183.4 rps
      - vs -

2120.7 rps
Еще нередкий бенчмарк
Немного не хватает
Есть              Надо
• 183.4 rps       • Распределения
                  • График во времени
                  • Время отклика
                  • HW конфигурация
                  • SW параметры
                  • Методология
                  • Цели!
Внутри ОДНОЙ точки…
…бывает маленькая вселенная
А как надо?
Цели uber alles
• Сравнение двух “систем”
    – HW, SW, версии, конфигурации
•   Нагрузочное тестирование
•   Планирование емкости
•   Проверка железа
•   Ликвидация ВНЕЗАПНЫХ проблем
•   Проверка регрессий, воспроизведение
    проблем, и т.д.
Цели => метрики
• Только rps == только bandwidth
  – Например, диск под нагрузкой
  – Например, кассы в супермаркете
• Только latency == только best-case wait time
  – Например, 1 поток, когда надо 16 потоков
• Только loadavg == только queue length
  – Например, опять касса в супермаркете
Цели => агрегатные функции
• Только среднее == это вообще о ком??
  – avg ( 1 ms x 999 + 10000 ms x 1) = 11 ms
  – avg ( 1 ms x 500 + 1000 ms x 500) = 501 ms
  – Средняя температура по больнице
• Иногда впрочем годятся min, max
  – Планирование емкости
  – Планирование катастроф!!!
  – NB: только при соблюдении ограничений
Шок! Ежа не сменить на ужа!
•   Разные метрики НЕ СВЯЗАНЫ
•   Померили rps, например
•   4 ядра, 100 rps == bandwidth
•   Интуитивно, 10 ms / req == latency, так?
•   Интуитивно, на 8 ядрах 200 rps, так?
Шок! Ежа не сменить на ужа!
• #АВОТХРЕН
• 100 rps => avg ( latency ) = 10 ms, ок
  – Увы, среднее не значит ничего
  – Min, max, median ( latency ) – какие угодно
• Cores x 2 => rps x ?
  – Масштабируемость нелинейна
  – Может и навредить! (RAM, disk trashing…)
Цели => план борьбы
• “У нас тормозит запрос, давай его
  оптимизить”
• Насколько станет быстрее?
   – Даже по малозначащему среднему?
• А ХРЕН ЕГО ЗНАЕТ
– 1 ms x 999 + 10000 ms x 1 => ???
– Вариант, avg ( 2 ms x 999 + 3000 ms x 1 ) = 5 ms
– Вариант, avg ( 0.1 ms x 999 + 10000 ms ) = 10 ms
Как же
быть???
Нельзя мерить
     rps
Нельзя мерить
   latency
Нельзя мерить
   loadavg
Нельзя мерить
   iowait
Нельзя мерить
  us/sy/wa
нужно мерить
ВСЕ МЕТРИКИ
 (целевые, а не loadavg)
нужно мерить
РАСПРЕДЕЛЕНИЕ
 (а не среднее по больнице)
Цели uber alles
•   Представьте себя вебсайтом, например
•   Нужно много, bandwidth
•   Нужно быстро, latency
•   Нужно одновременно, конфликт!
•   Цель?
    – Типично max { bandwidth | latency<=L }
    – Бывает min { latency | bandwidth<=B }
Мерь распределения!
• Вот, например, латентность
• Не особо годится avg ( latency )
• Уже лучше
  – Percentile_50 ( latency ) = median
  – Percentile_80, _95, _99 ( latency )
  – Percentile_100 ( latency ) = max, worst case
  – 95%, насколько это плохо?
• Совсем хорошо, график latency / bw( X )
Видь края!
• Помним про ограничения
  – Типично max { bandwidth | latency<=L }
  – Бывает min { latency | bandwidth<=B }
• global_max ( bw ), но зато latency 30 сек
  – Добро пожаловать на шоссе Энтузиастов!!!
• global_min ( latency ), но только при 5 rps
  – “Да я в 5 утра за 15 минут в Выхино домчал…”
Помни цель!
• Например, выбрать между системой A, B
  – В широком смысле!
• Выбрать софт
  – XyzDB или WtfSQL?
• Выбрать железо
  – Xeon или Opteron?
• Выбрать настройки
  – Конкретные buffer_pool_size, число тредов, итп
Часть 1.1
План эксперимента
Мерь нужное!
• 10000 CREATE TABLE медленнее
  => innodb отстой!

• Avg ( ReportLatency ) улучшилось в 3 раза
  => хорошее изменение!

• 1000 x INSERT стал в 2 раза быстрее
  => новый CPU рулит!
Но есть нюанс…
• 10000 CREATE TABLE медленнее
  => а все остальное?

• Avg ( ReportLatency ) улучшилось в 3 раза
  => жалко, все остальное ухудшилось в 2

• 1000 x INSERT стал в 2 раза быстрее
  => вот только ядер в 4 раза меньше
Сравнивай сравнимое!
• Собственно, с чего возник доклад…
• Срочно в номер, Sphinx в 100500 раз
  медленнее Mamba!!!
Сравнивай сравнимое!
•   Читаем внимательно
•   Sphinx, померили… full scan
•   Mamba, померили… “index” lookup
•   “Я мастерски соптимизировал запрос с 30
    до 20 сек, ну а потом построил индекс”
Сравнивай сравнимое!
• Еще интересные варианты
  – Guilty as charged…
• Давайте померим отладочный билд!
• Давайте оставим дефолтные настройки!
• Давайте жахнем один запрос 1000 раз!

• Клади линейку с правильного края!!!
• Исключение, маркетинг!!!
Часть 2
Профайлинг
Типичная ситуация раз
•   Штатный режим
•   В ходе разработки, плановые тесты
•   Бывает редко ;)
•   Методика – понятная
    – Сделали эксперимент (репрезентативный)
    – Собрали все подряд счетчики
    – Посмотрели, отыскали диод, повторили
Типичная ситуация два
• ААА ШЕФ ВСЕ
  ПРОПАЛО!!!
• Внезапный сбой
• Паника!
Типичная ситуация два
• ААА ВСЕ ПРОПАЛО
• Давление снаружи и изнутри черепа
• Методика – такая же
  – Физику не обманешь
  – Правда, эксперимент уже в быстром полете
• Offtopic (?), “как обычно” – быстрее
  – А вот психику обманешь!
Стандартные тулзы
• Когда в разработке
  – обычно – gprof (C/C++), xdebug (php) итп
  – хардкор – нанобенчмарки, vtune!!!
• Когда режем по живому
  – ps, top, vmstat, iostat, mpstat, netstat, strace,
    oprofile…
• Когда идем по приборам
  – sar, munin, cacti, …
Нестандартные тулзы
• В приложении
  – Встроенные счетчики
  – Крайне желательно, последовательные
• Снаружи
  – kill –SEGV + gdb!
• В голове
  – Знание “мировых констант”
  – Арифметика и нюх!!!
Offtopic про мировые константы
•   CPU, L1            ~ 1,000,000,000 ops   1e9
•   CPU, L2, misbranch ~ 100,000,000 ops     1e8
•   RAM access         ~ 10,000,000 ops      1e7
•   ? 10x RAM accesses
•   SSD megaraid       ~ 100,000 ops         1e5
•   SSD                ~ 10,000 ops          1e4
•   LAN rt / 1MB RAM ~ 1,000 ops             1e3
•   HDD seek / 1MB LAN ~ 100 ops             1e2
•   WAN roundtrip      ~ 10 ops              1e1
Кейс #1, тормоза… без нагрузки
•   Sphinx, trunk, очередной апдейт
•   Под нагрузкой – все примерно ок
•   Без нагрузки – адская загрузка CPU
•   В общем – чуть (?) хуже

• strace, gdb
  => pthread_mutex_timedlock + ошибочка!!!
Кейс #2, невидимый диод
• MySQL, prod
• Внезапно, чудовищные тормоза
  – всех запросов
  – Были миллисекунды, стали минуты (!)
• Ничего не поменялось!
  – На работе никого, суббота
Кейс #2, исключаем глупое
• Живое железо (виртуализации нет)
• Внешний SAN
• Проверяем, что все запросы тормозят
  – SHOW PROCESSLIST, все так
• Проверяем, что SAN чувствует себя ок
  – Клиент проверил, SAN о сбоях не говорит
Кейс #2, смотрим всякое
• SHOW PROCESSLIST, vmstat, iostat
  – Запросы висят в commit
  – 100% утилизация IO, iowait, но все медленно
  – Видимо, CPU профайлить бесполезно
• stacktrace, strace, oprofile
  – Ничего подозрительного, см. бесполезно
• sar
  – В момент сбоя упали rtps, wtps, вырос iowait
Кейс #2, практически нашли!
• Выяснили, это IO подсистема!
• Непростая, SAN по FC, много POF
  – DB сервер
  – Сам SAN
  – Соединение по FC
  – Диск на SAN
• Бенчмарк с другого сервера, все тоже плохо
• И внезапно…
Кейс #2, совсем нашли
• Браузер закешировал статус!!!
• На самом деле, там таки издох диск ;)

• Мораль – никому не верить ;)
  – Особенно людям
  – Даже своим глазам
Часть 3
Предсказания
Самое интересное – совсем мало ;)
• Как предсказывать масштабируемость
  – Предсказываю, наверняка не уложусь по
    времени!!!
• Зачем? Планирование емкости, в тч. в полете
• Ключевые слова
  –   Little’s law
  –   Amdahl’s law
  –   Universal Scalability law
  –   Линейная регрессия, очистка данных
Закон Литтла
• Concurrency = Throughput * Response
• Клиенты = Прибытие * Обработка

• Все это средние за длинный период
• 10 ядер, 0.5 сек с ядра = 5 клиентов

• В среднем!
• Придет больше – будут стоять “клиенты”
• Придет меньше – будут стоять “работники”
Закон Амдала


    линейной
масштабируемости

НЕ БЫВАЕТ
Закон Амдала
Закон Амдала
• 95% работы параллелится, но =>
• 5% работы не параллелится (a = 0.05) =>
• 20 раз максимум, причем недостижимый
  – 24 x CPU = 11.1 x
  – 48 x CPU = 14.3 x
  – 64 x CPU = 15.2 x
• C(N) = N / ( 1 + a*(N-1) )
  – C == Capacity
Закон масштабируемости


   даже Амдаловой
  масштабируемости

 НЕ БЫВАЕТ
Закон масштабируемости
Universal Scalability Law
• ASL (Gene Amdahl 1967)
  – C(N) = N / ( 1 + a*(N-1) )
  – a = степень contention (непараллелящееся)
• USL (Neil Gunther 1993)
  – C(N) = N / ( 1 + a*(N-1) + b*N*(N-1) )
  – b = степень coherency (consistency delay)
  – Общие данные надо синхронизировать :(
Практические выводы?
• Душить contention, улучшать параллелизм
• Душить coherency, улучшать параллелизм
  – App mutex, DB lock, любой другой ресурс
• USL как бы говорит, есть sweet spot
  – Максимальная Capacity ( NumThreads / Boxes )
  – Значит, его можно измерить
  – Значит, его можно смоделировать!
Итого.
Сводка про бенчмарки
•   Помни о целях!
•   Не путай числа! rps != bandwidth)
•   Мерь нужное!     99% latency != avg rps
•   Не мерь среднее!
•   Мерь распределения!
•   Видь края-ограничения!
•   Сравнивай сравнимое!
Сводка про профайлинг
• Пользуй стандартные тулзы
  – vmstat, iostat, oprofile, ряд других
  – Обмеряем все типичные диоды
  – Проблема будет найдена
• Люби арифметику (ну хоть наблюдения)

• Ничего не боимся – см. психология
• Никому не верим – см. практика!!!
Сводка про предсказания
• Линейной масштабируемости – нет
• Сублинейной масштабируемости – нет
• С ростом – может случиться хуже

• Можно померить – а можно предсказать!
• Модель нетяжелая – регрессии рулят
Это почти все.
If you have eliminated
the impossible,

whatever remains,
however improbable,

must be the truth.
Это все.
Вопросы?
shodan@sphinxsearch.com

Mais conteúdo relacionado

Mais procurados

Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Ontico
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
С одним плюсом (Андрей Аксёнов)
С одним плюсом (Андрей Аксёнов)С одним плюсом (Андрей Аксёнов)
С одним плюсом (Андрей Аксёнов)Unigine Corp.
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Ontico
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Ontico
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Yandex
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 

Mais procurados (20)

Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
С одним плюсом (Андрей Аксёнов)
С одним плюсом (Андрей Аксёнов)С одним плюсом (Андрей Аксёнов)
С одним плюсом (Андрей Аксёнов)
 
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 

Destaque

Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Unigine Corp.
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008Ontico
 
Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Ontico
 
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013Unigine Corp.
 
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процесс
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процессCodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процесс
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процессCodeFest
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Ontico
 
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Ontico
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Ontico
 
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Ontico
 

Destaque (10)

Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
 
MySQL 101
MySQL 101MySQL 101
MySQL 101
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
 
Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)Компания навыворот (Андрей Аксенов)
Компания навыворот (Андрей Аксенов)
 
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013
Просто, нудно, сложно. Андрей Аксенов. Unigine Open Air 2013
 
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процесс
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процессCodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процесс
CodeFest 2012. Белов С. — Пентест на стероидах. Автоматизируем процесс
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
 
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
Учебный план для highload гуру / Андрей Аксёнов (Sphinx Technologies Inc.)
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
 
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
 

Semelhante a Крадущийся сервер, затаившийся диод (Андрей Аксенов)

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поискAndrew Aksyonoff
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Ontico
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...Ontico
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPILeonid Yuriev
 
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Vadim Kosov
 
Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupMail.ru Group
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программистаSlach
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetOntico
 

Semelhante a Крадущийся сервер, затаившийся диод (Андрей Аксенов) (20)

Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
Про качественный поиск
Про качественный поискПро качественный поиск
Про качественный поиск
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
 
Cpp
CppCpp
Cpp
 
Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
Chronicle Map
Chronicle MapChronicle Map
Chronicle Map
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Крадущийся сервер, затаившийся диод (Андрей Аксенов)

  • 1. Крадущийся сервер, затаившийся диод Андрей Аксенов, Sphinx
  • 2. КТО ЗДЕСЬ • Зовут Андрей, резидент HL ;) • Делал вебню, игры, поиск • Знаю много страшных слов • Сегодня про “скорость” в целом • Завтра про “поиск” в целом • Ничего нового, все украдено, explicit lyrics
  • 3. Про скорость • Как бенчмаркать – Как планировать эксперименты • Как профайлить • Как планировать емкость • Везде подразумевается прилагательное “ПРАВИЛЬНО”
  • 7. Немного не хватает Есть Надо • 183.4 rps • Распределения • График во времени • Время отклика • HW конфигурация • SW параметры • Методология • Цели!
  • 11. Цели uber alles • Сравнение двух “систем” – HW, SW, версии, конфигурации • Нагрузочное тестирование • Планирование емкости • Проверка железа • Ликвидация ВНЕЗАПНЫХ проблем • Проверка регрессий, воспроизведение проблем, и т.д.
  • 12. Цели => метрики • Только rps == только bandwidth – Например, диск под нагрузкой – Например, кассы в супермаркете • Только latency == только best-case wait time – Например, 1 поток, когда надо 16 потоков • Только loadavg == только queue length – Например, опять касса в супермаркете
  • 13. Цели => агрегатные функции • Только среднее == это вообще о ком?? – avg ( 1 ms x 999 + 10000 ms x 1) = 11 ms – avg ( 1 ms x 500 + 1000 ms x 500) = 501 ms – Средняя температура по больнице • Иногда впрочем годятся min, max – Планирование емкости – Планирование катастроф!!! – NB: только при соблюдении ограничений
  • 14. Шок! Ежа не сменить на ужа! • Разные метрики НЕ СВЯЗАНЫ • Померили rps, например • 4 ядра, 100 rps == bandwidth • Интуитивно, 10 ms / req == latency, так? • Интуитивно, на 8 ядрах 200 rps, так?
  • 15. Шок! Ежа не сменить на ужа! • #АВОТХРЕН • 100 rps => avg ( latency ) = 10 ms, ок – Увы, среднее не значит ничего – Min, max, median ( latency ) – какие угодно • Cores x 2 => rps x ? – Масштабируемость нелинейна – Может и навредить! (RAM, disk trashing…)
  • 16. Цели => план борьбы • “У нас тормозит запрос, давай его оптимизить” • Насколько станет быстрее? – Даже по малозначащему среднему? • А ХРЕН ЕГО ЗНАЕТ – 1 ms x 999 + 10000 ms x 1 => ??? – Вариант, avg ( 2 ms x 999 + 3000 ms x 1 ) = 5 ms – Вариант, avg ( 0.1 ms x 999 + 10000 ms ) = 10 ms
  • 23. нужно мерить ВСЕ МЕТРИКИ (целевые, а не loadavg)
  • 24. нужно мерить РАСПРЕДЕЛЕНИЕ (а не среднее по больнице)
  • 25. Цели uber alles • Представьте себя вебсайтом, например • Нужно много, bandwidth • Нужно быстро, latency • Нужно одновременно, конфликт! • Цель? – Типично max { bandwidth | latency<=L } – Бывает min { latency | bandwidth<=B }
  • 26. Мерь распределения! • Вот, например, латентность • Не особо годится avg ( latency ) • Уже лучше – Percentile_50 ( latency ) = median – Percentile_80, _95, _99 ( latency ) – Percentile_100 ( latency ) = max, worst case – 95%, насколько это плохо? • Совсем хорошо, график latency / bw( X )
  • 27.
  • 28. Видь края! • Помним про ограничения – Типично max { bandwidth | latency<=L } – Бывает min { latency | bandwidth<=B } • global_max ( bw ), но зато latency 30 сек – Добро пожаловать на шоссе Энтузиастов!!! • global_min ( latency ), но только при 5 rps – “Да я в 5 утра за 15 минут в Выхино домчал…”
  • 29. Помни цель! • Например, выбрать между системой A, B – В широком смысле! • Выбрать софт – XyzDB или WtfSQL? • Выбрать железо – Xeon или Opteron? • Выбрать настройки – Конкретные buffer_pool_size, число тредов, итп
  • 31. Мерь нужное! • 10000 CREATE TABLE медленнее => innodb отстой! • Avg ( ReportLatency ) улучшилось в 3 раза => хорошее изменение! • 1000 x INSERT стал в 2 раза быстрее => новый CPU рулит!
  • 32. Но есть нюанс… • 10000 CREATE TABLE медленнее => а все остальное? • Avg ( ReportLatency ) улучшилось в 3 раза => жалко, все остальное ухудшилось в 2 • 1000 x INSERT стал в 2 раза быстрее => вот только ядер в 4 раза меньше
  • 33. Сравнивай сравнимое! • Собственно, с чего возник доклад… • Срочно в номер, Sphinx в 100500 раз медленнее Mamba!!!
  • 34.
  • 35. Сравнивай сравнимое! • Читаем внимательно • Sphinx, померили… full scan • Mamba, померили… “index” lookup • “Я мастерски соптимизировал запрос с 30 до 20 сек, ну а потом построил индекс”
  • 36. Сравнивай сравнимое! • Еще интересные варианты – Guilty as charged… • Давайте померим отладочный билд! • Давайте оставим дефолтные настройки! • Давайте жахнем один запрос 1000 раз! • Клади линейку с правильного края!!! • Исключение, маркетинг!!!
  • 38. Типичная ситуация раз • Штатный режим • В ходе разработки, плановые тесты • Бывает редко ;) • Методика – понятная – Сделали эксперимент (репрезентативный) – Собрали все подряд счетчики – Посмотрели, отыскали диод, повторили
  • 39. Типичная ситуация два • ААА ШЕФ ВСЕ ПРОПАЛО!!! • Внезапный сбой • Паника!
  • 40. Типичная ситуация два • ААА ВСЕ ПРОПАЛО • Давление снаружи и изнутри черепа • Методика – такая же – Физику не обманешь – Правда, эксперимент уже в быстром полете • Offtopic (?), “как обычно” – быстрее – А вот психику обманешь!
  • 41. Стандартные тулзы • Когда в разработке – обычно – gprof (C/C++), xdebug (php) итп – хардкор – нанобенчмарки, vtune!!! • Когда режем по живому – ps, top, vmstat, iostat, mpstat, netstat, strace, oprofile… • Когда идем по приборам – sar, munin, cacti, …
  • 42. Нестандартные тулзы • В приложении – Встроенные счетчики – Крайне желательно, последовательные • Снаружи – kill –SEGV + gdb! • В голове – Знание “мировых констант” – Арифметика и нюх!!!
  • 43. Offtopic про мировые константы • CPU, L1 ~ 1,000,000,000 ops 1e9 • CPU, L2, misbranch ~ 100,000,000 ops 1e8 • RAM access ~ 10,000,000 ops 1e7 • ? 10x RAM accesses • SSD megaraid ~ 100,000 ops 1e5 • SSD ~ 10,000 ops 1e4 • LAN rt / 1MB RAM ~ 1,000 ops 1e3 • HDD seek / 1MB LAN ~ 100 ops 1e2 • WAN roundtrip ~ 10 ops 1e1
  • 44. Кейс #1, тормоза… без нагрузки • Sphinx, trunk, очередной апдейт • Под нагрузкой – все примерно ок • Без нагрузки – адская загрузка CPU • В общем – чуть (?) хуже • strace, gdb => pthread_mutex_timedlock + ошибочка!!!
  • 45. Кейс #2, невидимый диод • MySQL, prod • Внезапно, чудовищные тормоза – всех запросов – Были миллисекунды, стали минуты (!) • Ничего не поменялось! – На работе никого, суббота
  • 46. Кейс #2, исключаем глупое • Живое железо (виртуализации нет) • Внешний SAN • Проверяем, что все запросы тормозят – SHOW PROCESSLIST, все так • Проверяем, что SAN чувствует себя ок – Клиент проверил, SAN о сбоях не говорит
  • 47. Кейс #2, смотрим всякое • SHOW PROCESSLIST, vmstat, iostat – Запросы висят в commit – 100% утилизация IO, iowait, но все медленно – Видимо, CPU профайлить бесполезно • stacktrace, strace, oprofile – Ничего подозрительного, см. бесполезно • sar – В момент сбоя упали rtps, wtps, вырос iowait
  • 48. Кейс #2, практически нашли! • Выяснили, это IO подсистема! • Непростая, SAN по FC, много POF – DB сервер – Сам SAN – Соединение по FC – Диск на SAN • Бенчмарк с другого сервера, все тоже плохо • И внезапно…
  • 49. Кейс #2, совсем нашли • Браузер закешировал статус!!! • На самом деле, там таки издох диск ;) • Мораль – никому не верить ;) – Особенно людям – Даже своим глазам
  • 51. Самое интересное – совсем мало ;) • Как предсказывать масштабируемость – Предсказываю, наверняка не уложусь по времени!!! • Зачем? Планирование емкости, в тч. в полете • Ключевые слова – Little’s law – Amdahl’s law – Universal Scalability law – Линейная регрессия, очистка данных
  • 52. Закон Литтла • Concurrency = Throughput * Response • Клиенты = Прибытие * Обработка • Все это средние за длинный период • 10 ядер, 0.5 сек с ядра = 5 клиентов • В среднем! • Придет больше – будут стоять “клиенты” • Придет меньше – будут стоять “работники”
  • 53. Закон Амдала линейной масштабируемости НЕ БЫВАЕТ
  • 55. Закон Амдала • 95% работы параллелится, но => • 5% работы не параллелится (a = 0.05) => • 20 раз максимум, причем недостижимый – 24 x CPU = 11.1 x – 48 x CPU = 14.3 x – 64 x CPU = 15.2 x • C(N) = N / ( 1 + a*(N-1) ) – C == Capacity
  • 56. Закон масштабируемости даже Амдаловой масштабируемости НЕ БЫВАЕТ
  • 58. Universal Scalability Law • ASL (Gene Amdahl 1967) – C(N) = N / ( 1 + a*(N-1) ) – a = степень contention (непараллелящееся) • USL (Neil Gunther 1993) – C(N) = N / ( 1 + a*(N-1) + b*N*(N-1) ) – b = степень coherency (consistency delay) – Общие данные надо синхронизировать :(
  • 59. Практические выводы? • Душить contention, улучшать параллелизм • Душить coherency, улучшать параллелизм – App mutex, DB lock, любой другой ресурс • USL как бы говорит, есть sweet spot – Максимальная Capacity ( NumThreads / Boxes ) – Значит, его можно измерить – Значит, его можно смоделировать!
  • 60.
  • 61.
  • 63. Сводка про бенчмарки • Помни о целях! • Не путай числа! rps != bandwidth) • Мерь нужное! 99% latency != avg rps • Не мерь среднее! • Мерь распределения! • Видь края-ограничения! • Сравнивай сравнимое!
  • 64. Сводка про профайлинг • Пользуй стандартные тулзы – vmstat, iostat, oprofile, ряд других – Обмеряем все типичные диоды – Проблема будет найдена • Люби арифметику (ну хоть наблюдения) • Ничего не боимся – см. психология • Никому не верим – см. практика!!!
  • 65. Сводка про предсказания • Линейной масштабируемости – нет • Сублинейной масштабируемости – нет • С ростом – может случиться хуже • Можно померить – а можно предсказать! • Модель нетяжелая – регрессии рулят
  • 67.
  • 68.
  • 69.
  • 70. If you have eliminated the impossible, whatever remains, however improbable, must be the truth.
  • 72.