66
Рост курса валют vs рост числа пользователей Как banki.ru пережил утроение нагрузки за неделю Роман Ивлиев Директор по информацинным технологиям Банки.ру

Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки

Embed Size (px)

Citation preview

Рост курса валют vs рост

числа пользователей

Как banki.ru пережил утроение нагрузки за неделю

Роман

Ивлиев

Директор по

информацинным

технологиям

Банки.ру

2002-....

• Тестировщик

• Разработчик

• Руководитель разработчиков

• Руководитель тестировщиков

• Руководитель проектов

• CTO

• CIO

Кто я?

Мы ходим по земле

• PHP 5.х + Symfony 2 + Yii

• Postgres(9.х)+MariaDB

• Memcache+Redis

• Rabbit

• Nginx + Apache

• Битрикс

• Зоопарк осей на 10 серверах (FreeBSD, CentOS и ещё)

Нам 10 лет, в департаменте ИТ 40 человек, мы принимаем 500К

уников в сутки, и мы выручили в 2014 почти 600КК рублей.

Это очень важно!

О чем расскажу?

• Как мы пережили скачок?

О чем расскажу?

• Как мы пережили скачок?

• Почему мы не сделали всё это раньше?

О чем расскажу?

• Как мы пережили скачок?

• Почему мы не сделали всё это раньше?

• А что мы делаем теперь?

О чем расскажу?

• Как мы пережили скачок?

• Почему мы не сделали всё это раньше?

• А что мы делаем теперь?

• А что будет, если ЦБ повторит?

О чем расскажу?

• Как мы пережили скачок?

• Почему мы не сделали всё это раньше?

• А что мы делаем теперь?

• А что будет, если ЦБ повторит?

• Немного выводов и мудрости

Знали ли мы про маневры ЦБ?

Знали ли мы про маневры ЦБ?

Глазами администратора

Глазами администратора

• Анализ логов и перенастройка серверов

Глазами администратора

• Анализ логов и перенастройка серверов

• Включение/отключение логирования

Глазами администратора

• Анализ логов и перенастройка серверов

• Включение/отключение логирования

• Включение/отключение статистик

Глазами администратора

• Анализ логов и перенастройка серверов

• Включение/отключение логирования

• Включение/отключение статистик

• Ок, Гугл, выручай!

Окей, Гугл, выручай!

Глазами администратора

• Анализ логов и перенастройка серверов

• Включение/отключение логирования

• Включение/отключение статистик

• Ок, Гугл, выручай!

• Управляемая деградация

Управляемая деградация

Управляемая деградация

• «Ручное» регулирование числа

пользователей

Управляемая деградация

• «Ручное» регулирование числа

пользователей

• Отключение части функционала

Управляемая деградация

• «Ручное» регулирование числа

пользователей

• Отключение части функционала

• Напрягается саппорт, а не сервера

Прихвостни ЦБ!!!!

Пустите посмотреть курсы доллара!!!!

Прихвостни ЦБ!!!!

Пустите посмотреть курсы доллара!!!!

Вы это специально??!!!!

Прихвостни ЦБ!!!!

Пустите посмотреть курсы доллара!!!!

Вы это специально??!!!!

Прихвостни ЦБ!!!!

Да @БВАШ@Ь!!!!

Пустите посмотреть курсы доллара!!!!

Вы это специально??!!!!

Прихвостни ЦБ!!!!

Да стопудов это же вы так специально!!!!

Да @БВАШ@Ь!!!!

Глазами администратора

• Балансировка сервисов по серверам в

реальном времени

Глазами администратора

• Балансировка сервисов по серверам в

реальном времени

• Виртуализация под задачи

Глазами администратора

• Балансировка сервисов по серверам в

реальном времени

• Виртуализация под задачи

• Бонус-трек: Экстренный порт на линукс,

чтобы размножаться пачкованием.

Глазами разработчика

Глазами разработчика

• Слоулоги (php, СУБД, web, zabbix)

Глазами разработчика

• Слоулоги (php, СУБД, web, zabbix)

• Память предков и личного состава

Глазами разработчика

• Слоулоги (php, СУБД, web, zabbix)

• Память предков и личного состава

• Летопись технического долга

Глазами разработчика

• Битва с джойнами, индексами и

сортировками

Глазами разработчика

• Битва с джойнами и сортировками

• Отложенные вычисления и предварительная

подготовка данных

Глазами менеджера

Глазами менеджера

• «Ручное» управление

Глазами менеджера

• «Ручное» управление

• Главный враг - паника

Глазами менеджера

• «Ручное» управление

• Главный враг - паника

• Управляет процессом всегда кто-то один

Глазами менеджера

• «Ручное» управление

• Главный враг - паника

• Управляет процессом всегда кто-то один

• Быстрый откат

Глазами менеджера

• «Ручное» управление

• Главный враг - паника

• Управляет процессом всегда кто-то один

• Быстрый откат

• Все изменения в Вики.

Почему мы не сделали этого раньше?

Крутые отмазки:

• На самом деле планы были, но не такие

масштабные

• Бизнес не хочет тратиться на такой запас по

мощности

• Сильно-связный код

Почему мы не сделали этого раньше?

Менее крутые:

• Бизнесовые задачи кушают время лучших

умов

• Нет полноценной нагрузочной среды

• А надо ли это делать на два дня?

Вот пример последнего тезиса

А что мы делаем теперь?

• Постепенно выпиливаем то, что осталось с

учётом опыта тех дней

А что мы делаем теперь?

• Постепенно выпиливаем то, что осталось с

учётом опыта тех дней

• Немного поменяли приоритеты в вопросах

замены сервисов

А что мы делаем теперь?

• Постепенно выпиливаем то, что осталось с

учётом опыта тех дней

• Немного поменяли приоритеты в вопросах

замены сервисов

• Прикупили пару новых мощных железяк

А что мы делаем теперь?

• Постепенно выпиливаем то, что осталось с

учётом опыта тех дней

• Немного поменяли приоритеты в вопросах

замены сервисов

• Прикупили пару новых мощных железяк

• Вкладываемся в SOA

А что мы сделаем, если повторится декабрь?

• Мы точно продержимся гораздо дольше

А что мы сделаем, если повторится декабрь?

• Мы точно продержимся гораздо дольше

• Найдем новые узкие места

А что мы сделаем, если повторится декабрь?

• Мы точно продержимся гораздо дольше

• Найдем новые узкие места

• Придумаем, как их убрать и

А что мы сделаем, если повторится декабрь?

• Мы точно продержимся гораздо дольше

• Найдем новые узкие места

• Придумаем, как их убрать и

• Наверняка уберём

Выводы и мудрость

@dumtest

Роман

Ивлиев

Директор по

информационным

технологиям

Банки.ру

Спасибо!

Вопросы?

[email protected]

• http://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html -

анализ логов MySQL

• https://github.com/dalibo/pgbadger - анализ логов PostgreSQL

• http://pinba.org – сбор данных о работе приложения

• https://github.com/intaro/pinboard - визуализатор для данных Pinba

• https://github.com/phacility/xhprof - PHP-профайлер

• http://www.zabbix.com/ru/ - мониторинг системы (физические и

логические характеристики)

• http://www.slideshare.net/dumtest/ss-32903174 - мой рассказ про

построение высоконагруженных систем с примерами

• https://github.com/elastic/kibana - анализ и визуализация логов