Презентация к докладу: «Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта». Докладчик: Александр Фещенко – MVP (SQL Azure), .Net Team Lead в DCT.
В докладе будут рассмотрены методики поиска узких мест в веб-приложениях, их устранения, а также способы повышения производительности при помощи облачной инфраструктуры Windows Azure.
Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта
1. Высокопроизводительные
приложения на базе Windows
Azure. Пример реального проекта.
@feschenkoalex
Windows Azure MVP
http://feschenkoalex.blogspot.com
2. Проект sqlserverlaunch.com
Проблемы:
Ожидаемый пик
Сайт работает очень медленно пользователей
Непонятно как поведет себя система
при стрессовой нагрузке
До запуска остается совсем немного
времени
10000
Переписать проект с нуля нет
возможности
Официальный запуск
SQL Server
2012
3. Немного о проекте
Архитектура
SOA
Основная
технология
Frontend
ASP.N
ET
Backend
Database
5. Профилирование.Red Gate Memory Profiler
Программный комплекс, предназначенный для поиска утечек памяти в ваших
приложениях
Позволяет:
Находить утечки памяти в считанные минуты
Оптимизировать исходный код, неправильно использующий
память
Создавать более производительные приложения,
рационально использующие ресурсы
6. Red Gate Memory Profiler. Возможности.
Понятный
Скорость Визуализаци
результат
анализа я объектов
работы
Нахождение Широкие
источника средства
проблемы фильтрации
8. Какой механизм использовать ?
Windows Скорость
Меньшая Тесная
разворачиван
Azure стоимость интеграция
ия
Caching
Service
Более
Более Ограничение
высокая
Memcached высокая на размер
производител
стоимость объекта
ьность
9. Windows Azure Caching Service. Особенности
Производительност
Масштабируемость Простота
ь
• Провайдеры
• Данные хранятся • Снижение нагрузки ASP.NET / API
поблизости на бд
• Простое
• Локальное • Простое управление и
кеширование масштабирование разворачивание
• Любой .NET объект • Эластичный
размер
10. Кеширование разметки.
1h
Клиенты
Worker Role index,
agenda,
keynote…
Not cached Cached
index,
agenda,
keynote…
Web App
Blob Storage
11. Оптимизация кода.
ORM Сервисы Database
EF Context WCF Proxy SP Tuning
Создание Создание WCF- Хранимые
контекста прокси процедуры
ресурсоемкая ресурсоемкая выполняются
операция. операция. медленно.
Решение: Один Решение: Пул Решение:
инстанс EF- прокси объектов Создание доп.
контекста на один (*ChannelFactory) индексов,
HTTP-запрос оптимизация
планов
выполнения…..
12. Нагрузочное тестирование. Проблема.
1) Проблема не воспроизводится
2) Сайт прекрасно работает на девелоперской машине
3) Вы не представляете что за ошибка
4) Предположение: сайт «умирает» во время нагрузки
5) Необходимо создать определенную нагрузку для
выявления проблемы
13. Нагрузочное тестирование. Visual Studio.
Visual • Web Performance
Tests
Studio • Load Tests
Ultimate • Load Test Rigs
Visual
• Profiling Tools
Studio • Performance Wizard
Premium
14. Нагрузочное тестирование. План.
Сохранить пользовательскую активность при
помощи Web Performance Test
Имитировать нагрузку при помощи Load Tests
Имитировать большое количество пользователей
при помощи Load Test Rig
Воспроизвести ошибки
Найти проблемы с кодом
Исправить код
15. Web Performance Test.
Один из видов тестов в Visual Studio 2010 Ultimate
Составная часть нагрузочных тестов
Должны эмулировать User Story
Например
Как администратор я хочу иметь возможность искать
пользователей по логину и деактивировать их аккаунты
Как пользователь я хочу иметь возможность заказывать
пиццу и расплачиваться кредитной картой
16. Нагрузочное тестирование. VS Load Test.
Микс Web Performance и Unit тестов
Эмуляция активности нескольких пользователей,
выполняющих определенный набор операций
Эмуляция скорости передачи данных
Эмуляция различных браузеров
Гибкая настройка количества виртуальных
пользователей и механизма их добавления во время
теста
17. Зачем Unit-тест в Load-тесте ?
Удобно для тестирования WCF
Важно для Silverlight и SOA
WCF Load Test SQL Load Test
18. 2 способа запуска нагрузочных тестов
VS 2010 Test Rig
• Более правдоподобная
• Используется только 1 нагрузка
CPU
• Эмуляция большего
• Лимит в 250 количества
виртуальных пользователей
пользователей
19. Лицензия на дополнительных пользователей
Microsoft Visual Studio Team System 2010 Test Load
Virtual User Pack
Эмуляция до 1000 виртуальных пользователей
20. Нагрузочное тестирование. Test Rig.
Координиро
Контроллер вание и Генерация
Приложение
сбор нагрузки
Управление результатов
Лицензирование
Perfmon счетчики
Агент 1
Веб сервер
Агент (1…n)
Симуляция пользователей Контроллер Агент 2
База
данных
Агент n