SlideShare a Scribd company logo
Highload: проблемы и решения
    Что нужно знать, приступая к новому проекту?




Ufa Developer Community. Олег Шерыхалин, o.sherykhalin@gmail.com
Что такое highload?
  10 запросов в секунду — это highload?
  20 запросов?..
  100?!

     Highload — это когда система
     не справляется с нагрузкой :)

  Признаки проблемы:
  увеличение времени обслуживания
  отказ обслуживания
Кривая деградации сервиса
   обслуженные
   запросы

             зона Highload



                                     «падение»
                                      сервиса
            штатная
            работа

                         поступившие запросы
Highload приходит внезапно…
 Нагрузка растёт неравномерно. Возможные причины:
 суточная и календарная цикличность посещаемости
 внешние события (breaking news)
 эффект от рекламной кампании
 распродажи и акции, привлекающие посетителей

                зона Highload              Прогноз
 посещаемость




                                           посещаемости
                                           Фактическая
                                           посещаемость


                                   время
Узкие места

   Процессор
   Оперативная память
   Дисковая подсистема
   Сеть
Масштабируемость
 Вертикальная                  Горизонтальная




Улучшение характеристик,       Наращивание количества
«расширение» «узкого места»,   компонентов
апгрейд оборудования           системы, добавление
                               оборудования
Процессор: что внутри? Потоки.
Синхронная модель
Каждый запрос запускается в отдельном потоке
Количество потоков ограничено (пул потоков)
Ожидающие ресурс потоки могут заполнить весь пул
Пример: Apache, IIS

Асинхронная модель
Один поток (на каждое ядро процессора)
Диспетчер следит за событиями и вызывает обработчики
Количество обработчиков зависит от производительности
Пример: NginX, node.js
Кэширование данных
 Задача: разгрузить дисковую подсистему и процессор
 Решение: переместить данные в оперативную память
 Что кэшировать?
 частые выборки из базы
 динамические фрагменты html

 Как кэшировать?
 memcached

 Дополнительные решения:
 использование Content Delivery Network (CDN)
 кэширование данных на клиенте
Сборка HTML на клиенте
  база        шаблоны       база       шаблоны
 данных       страниц      данных      страниц




 Обработка    Подготовка   Обработка
  данных        HTML        данных


     сервер                   сервер

     клиент                   клиент
              Отображе-    Отображе-   Подготовка
                 ние          ние        HTML
Оптимизация баз данных
 Грамотное проектирование схемы
 Использование индексов
 Оптимизация SQL–запросов
 Настройка параметров СУБД
NoSQL — нереляционная модель
  Денормализация — это не баг, а фича
   Key–value хранилища:
   Redis, Cassandra
   Документо–ориентированные СУБД:
   MongoDB, CouchDB
   Главные преимущества:
   быстрый доступ к данным
   простота горизонтального масштабирования

Нельзя просто взять и заменить SQL на NoSQL!
Кластеризация web–серверов
  Распараллеливание, балансировка нагрузки



          Балансировщи
              к нагрузки




  web-             web-        web-
 сервер           сервер      сервер


  Проблема: поддержка сессий клиентов
  Решения: sessionless, хранение сессий в БД,
  интеллектуальный балансировщик
Кластеризация баз данных
Репликация master-slave                Репликация master-master
             write
read         only               read   read                          read
only                            only   write                         write



              replication                              replication

Шардинг — разделение данных на независимые объекты
          read                read             read
          write               write            write

       Object A             Object B      Object C
«Облачные» решения
 Ресурсы по требованию: подключаем дополнительные
 мощности только на время пиковой нагрузки

 Пример: Amazon Web Services (AWS)
 Elastic Load Balancing — балансировка
 CloudWatch — мониторинг
 Auto Scaling — добавление серверов



                                         Иллюстрация из статьи
                                         «Архитектура Битрикс24
                                         — взгляд изнутри» ,
                                         habrahabr.ru, 26.04.2012
Отказоустойчивость
 Риски отказов
 отказы серверов
 отказы каналов связи
 аварии датацентров

 Управляемая деградация
 «урезание» функционала ради сохранения
 доступности системы для пользователей

 Восстановление
 План восстановления в случае аварии
 Регулярные «учения» по восстановлению
 Контроль доступности резервных копий
Сетевые атаки
 Виды атак:
 ICMP/UDP/SYN/ACK-флуд
 Атаки на прикладном уровне

 Цели атак:
 Просто «положить» сайт на некоторое время
 Получить доступ к конфиденциальным данным
 Внедрить бота

 Способы защиты:
 Грамотная настройка ОС, серверов
 Использование fierewall, специальных модулей
 Услуги специализированных провайдеров
И это ещё не всё…
 Мониторинг

 Деплоймент

 Нагрузочное тестирование

More Related Content

PPTX
Highload: проблемы и решения
PPTX
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
PDF
Блеск и нищета распределённых кэшей
PDF
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
PPT
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
PDF
Александр Шуйсков (NAUMEN): перспективы развития Database as a Service
PPTX
Веб-кластер
PPTX
Распределённый кэш или хранилище данных. Что выбрать?
Highload: проблемы и решения
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Блеск и нищета распределённых кэшей
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
“КП” в интернете (Александр Ромашин, Вячеслав Малютин)
Александр Шуйсков (NAUMEN): перспективы развития Database as a Service
Веб-кластер
Распределённый кэш или хранилище данных. Что выбрать?

What's hot (20)

PDF
Rsnx tsvetkov che btrix conf 2015
PDF
Александр Соловьёв, Griddynamics.com
ODP
Scaling Web Sites By Sharding And Replication Hl2008 Rus
PDF
Отказоустойчивые решения SQL
PPTX
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
PPTX
No sql.mongodb scaling
PDF
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
PPTX
NoSQL - взрыв возможностей
PPTX
NoBigData - потоковая система аналитики clientside производительности, Сергей...
PPTX
Поиск на своем сайте, обзор open source решений
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PPTX
DATA CLUSTER
PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
PPT
Hl2008 Spy Log Architechture 169
PPTX
Оптимизация производительности среды VDI
PPT
New SpyLOG architechture (Highload 2008)
PPTX
Высокая доступность web приложений. SHALB.com
PDF
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
PPT
Client optimization drupal
PPT
1С-Битрикс - Веб-кластер
Rsnx tsvetkov che btrix conf 2015
Александр Соловьёв, Griddynamics.com
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Отказоустойчивые решения SQL
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
No sql.mongodb scaling
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
NoSQL - взрыв возможностей
NoBigData - потоковая система аналитики clientside производительности, Сергей...
Поиск на своем сайте, обзор open source решений
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
DATA CLUSTER
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Hl2008 Spy Log Architechture 169
Оптимизация производительности среды VDI
New SpyLOG architechture (Highload 2008)
Высокая доступность web приложений. SHALB.com
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Client optimization drupal
1С-Битрикс - Веб-кластер
Ad

Viewers also liked (7)

PPTX
PHP Anamnes 2015
PDF
HighLoad systems: tips & tricks
PPTX
High load для начинающих
PDF
Алексей Иванкин: Highload + PHP
PDF
Лекция 5: B-деревья (B-trees, k-way merge sort)
PDF
Векторизация кода (семинар 2)
PDF
Демонизированный PHP - before it was cool
PHP Anamnes 2015
HighLoad systems: tips & tricks
High load для начинающих
Алексей Иванкин: Highload + PHP
Лекция 5: B-деревья (B-trees, k-way merge sort)
Векторизация кода (семинар 2)
Демонизированный PHP - before it was cool
Ad

Similar to UFADevCom'13#1 Шерыхалин Олег (20)

PDF
Разработка веб-сервисов осень 2013 лекция 11
PPT
Быстрое масштабирование систем
PDF
High load2007 scaling-web-applications-rus
PPTX
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
PPT
распределенная архитектура Lamp приложений петр зайцев
PDF
High Load 2009 Imdg Presentation
PDF
Учебный день конференции HighLoad++ 2013
PPT
Rybak Big Projects New
PPTX
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
PPTX
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
PDF
Вебинар "Разработка высоконагруженных и надежных систем": Введение
PDF
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
PDF
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
PPTX
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PPTX
Учебный день конференции HighLoad++ 2013
PPTX
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
PPTX
Windows azure общий обзор
Разработка веб-сервисов осень 2013 лекция 11
Быстрое масштабирование систем
High load2007 scaling-web-applications-rus
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
распределенная архитектура Lamp приложений петр зайцев
High Load 2009 Imdg Presentation
Учебный день конференции HighLoad++ 2013
Rybak Big Projects New
Узкие места производительности веб-приложений, или куда смотреть, чтобы ничег...
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
Вебинар "Разработка высоконагруженных и надежных систем": Введение
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Учебный день конференции HighLoad++ 2013
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Windows azure общий обзор

UFADevCom'13#1 Шерыхалин Олег

  • 1. Highload: проблемы и решения Что нужно знать, приступая к новому проекту? Ufa Developer Community. Олег Шерыхалин, o.sherykhalin@gmail.com
  • 2. Что такое highload? 10 запросов в секунду — это highload? 20 запросов?.. 100?! Highload — это когда система не справляется с нагрузкой :) Признаки проблемы: увеличение времени обслуживания отказ обслуживания
  • 3. Кривая деградации сервиса обслуженные запросы зона Highload «падение» сервиса штатная работа поступившие запросы
  • 4. Highload приходит внезапно… Нагрузка растёт неравномерно. Возможные причины: суточная и календарная цикличность посещаемости внешние события (breaking news) эффект от рекламной кампании распродажи и акции, привлекающие посетителей зона Highload Прогноз посещаемость посещаемости Фактическая посещаемость время
  • 5. Узкие места Процессор Оперативная память Дисковая подсистема Сеть
  • 6. Масштабируемость Вертикальная Горизонтальная Улучшение характеристик, Наращивание количества «расширение» «узкого места», компонентов апгрейд оборудования системы, добавление оборудования
  • 7. Процессор: что внутри? Потоки. Синхронная модель Каждый запрос запускается в отдельном потоке Количество потоков ограничено (пул потоков) Ожидающие ресурс потоки могут заполнить весь пул Пример: Apache, IIS Асинхронная модель Один поток (на каждое ядро процессора) Диспетчер следит за событиями и вызывает обработчики Количество обработчиков зависит от производительности Пример: NginX, node.js
  • 8. Кэширование данных Задача: разгрузить дисковую подсистему и процессор Решение: переместить данные в оперативную память Что кэшировать? частые выборки из базы динамические фрагменты html Как кэшировать? memcached Дополнительные решения: использование Content Delivery Network (CDN) кэширование данных на клиенте
  • 9. Сборка HTML на клиенте база шаблоны база шаблоны данных страниц данных страниц Обработка Подготовка Обработка данных HTML данных сервер сервер клиент клиент Отображе- Отображе- Подготовка ние ние HTML
  • 10. Оптимизация баз данных Грамотное проектирование схемы Использование индексов Оптимизация SQL–запросов Настройка параметров СУБД
  • 11. NoSQL — нереляционная модель Денормализация — это не баг, а фича Key–value хранилища: Redis, Cassandra Документо–ориентированные СУБД: MongoDB, CouchDB Главные преимущества: быстрый доступ к данным простота горизонтального масштабирования Нельзя просто взять и заменить SQL на NoSQL!
  • 12. Кластеризация web–серверов Распараллеливание, балансировка нагрузки Балансировщи к нагрузки web- web- web- сервер сервер сервер Проблема: поддержка сессий клиентов Решения: sessionless, хранение сессий в БД, интеллектуальный балансировщик
  • 13. Кластеризация баз данных Репликация master-slave Репликация master-master write read only read read read only only write write replication replication Шардинг — разделение данных на независимые объекты read read read write write write Object A Object B Object C
  • 14. «Облачные» решения Ресурсы по требованию: подключаем дополнительные мощности только на время пиковой нагрузки Пример: Amazon Web Services (AWS) Elastic Load Balancing — балансировка CloudWatch — мониторинг Auto Scaling — добавление серверов Иллюстрация из статьи «Архитектура Битрикс24 — взгляд изнутри» , habrahabr.ru, 26.04.2012
  • 15. Отказоустойчивость Риски отказов отказы серверов отказы каналов связи аварии датацентров Управляемая деградация «урезание» функционала ради сохранения доступности системы для пользователей Восстановление План восстановления в случае аварии Регулярные «учения» по восстановлению Контроль доступности резервных копий
  • 16. Сетевые атаки Виды атак: ICMP/UDP/SYN/ACK-флуд Атаки на прикладном уровне Цели атак: Просто «положить» сайт на некоторое время Получить доступ к конфиденциальным данным Внедрить бота Способы защиты: Грамотная настройка ОС, серверов Использование fierewall, специальных модулей Услуги специализированных провайдеров
  • 17. И это ещё не всё… Мониторинг Деплоймент Нагрузочное тестирование