HighLoad++ 2017
Зал Конгресс-Холл, 7.11, 14:00
Презентация и тезисы:
http://www.highload.ru/2017/abstracts/2843.html
В докладе мы расскажем о том, как Яндекс.Деньги:
- захотели эквайрить множество онлайн-магазинов в ходе распродаж Black Friday;
- узнали, что должны разогнать обработку карточных авторизаций в 1000 раз;
- решились на десятки нагрузочных стрельб продакшна параллельно пользовательской деятельности совместно с группой банков-эквайров и платежных систем;
- тестировали, тюнили и перерабатывали всю свою систему ради этой цели;
- и главное – умерли или выдержали нагрузку в потоке платежей распродаж в день X?
17. Идем на прод
• тестовая маршрутизация параллельно пользовательской
• тестовые карты, но только для тестовой маршрутизации
• вопросы с безопасностью, ограничениями по числу операций и
числу запросов
09.11.2017 17
23. «Ж**а там с БД, блокировки и ожидания,
отсюда и время такое, всё CPU выжрали
своими экспериментами на базке» (с)
09.11.2017 23
24. Оптимизация на стороне DB:
• размеры буферов shared, work_mem уменьшены;
• включен fsync;
• checkpoints_segment увеличены;
• archive_mode выключено;
• убраны commit_delay, commit_siblings.
09.11.2017 24
25. Почему мы просели с БД?
• При обновлении LOB-сегмента старые данные пишутся не в UNDO
и остаются на месте, а новые попадают в другие блоки.
• LOB-сегменты имеют опцию RETENTION, поэтому UPDATE не
переписывает старые LOB-данные, пока не истечет
undo_retention.
• С ростом сеансов увеличивается объем изменений LOB, и UPDATE
«будто INSERT» пишет LOB-данные в новые блоки, вызывая
постоянный рост LOB-сегмента.
09.11.2017 25
26. Подробнее про БД
• Растет LOB-сегмент;
• Многократно сдвигаются HWM сегменты таблиц;
• Скачкообразно возрастает объем ввода-вывода, что приводит к
длительному сдвигу HWM сегментов;
• Торможение ввода-вывода (NetApp) от 20 до 1000 мс.
09.11.2017 26
27. Планы на тюнинг
• реорганизации хранилища на NetАpp
• замены серверов БД
• чистка БД – согласование с безопасниками, юристами,
коммерцией
09.11.2017 27
32. Теперь узкое место – база Скарта
09.11.2017 32
• await’ы на дисках базы достигали 100 мс
• sdb utilize была 100%
• CPU util на Скарт DB превысило 90%
39. Теперь узкое место – Скарт и его CPU
09.11.2017 39
• Оптимизация работы пары Скарт+Защитника: эвристика и
введение кэширования для работы с блэклистами.
• Распараллеливаем работу с КА и Магазами.
• В итоге: у нас останется только вставка операций в Скарт DB и
обновление их статуса.
47. Нам нужно:
09.11.2017 47
• Цель-терминал со стороны эквайра:
и non3ds, и без cvv
• Тысячи вполне себе реальных карт, откуда будем стрелять
• Бюджет на все это мероприятие
48. Бюджет состоит из:
09.11.2017 48
• деньги МПС за выпуск карт;
• деньги МПС за сумму от оборота карт;
• деньги МПС за каждую операции;
• деньги эквайру – за эквайринг.
• деньги нам – на операции.
52. 09.11.2017 52
• Мы объясняем это эквайру, прислушиваемся к его словам и
вместе уходим на «подкрутить что-то»
• Возвращаемся. Стреляемся. Раскручиваемся.
• С нашим первым эквайром мы добились результата за 5 минут до
начала распродажи.
Если магазины КА не готовы ждать больше 5
секунд
58. 09.11.2017 58
Но расслабляться некогда
• Автоприёмка релизов на производительность
• Регулярные боевые стрельбы на проде
• Постоянные ревью кода и тюнинг
59. 09.11.2017 59
Эпилог
• Боевые стрельбы с нашими партнерами и коллегами
продолжаются
• Сейчас мы технически можем провести исследование
производительности любой эмиссии и эквайринга с
определённой степенью точности