23
Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта. @feschenkoalex Windows Azure MVP http://feschenkoalex.blogspot.co

Высокопроизводительные приложения на базе Windows Azure

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Высокопроизводительные приложения на базе Windows Azure

Высокопроизводительные приложения на базе Windows

Azure. Пример реального проекта.

@feschenkoalexWindows Azure MVPhttp://feschenkoalex.blogspot.com

Page 2: Высокопроизводительные приложения на базе Windows Azure

Проект sqlserverlaunch.com

Ожидаемый пик пользователей

10000Официальный

запуск

SQL Server 2012

Проблемы:

Сайт работает очень медленно Непонятно как поведет себя

система при стрессовой нагрузке До запуска остается совсем

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

возможности

Page 3: Высокопроизводительные приложения на базе Windows Azure

Немного о проектеАрхитектура

SOAОсновная

технология

ASP.NET

Frontend

Backend

Database

Page 4: Высокопроизводительные приложения на базе Windows Azure

Методология

Профилирование

ОптимизацияНагрузочное тестирование

Scaling Capability

Page 5: Высокопроизводительные приложения на базе Windows Azure

Профилирование.Red Gate Memory Profiler

Позволяет:

Находить утечки памяти в считанные минуты Оптимизировать исходный код, неправильно

использующий память Создавать более производительные приложения,

рационально использующие ресурсы

Программный комплекс, предназначенный для поиска утечек памяти в ваших приложениях

Page 6: Высокопроизводительные приложения на базе Windows Azure

Red Gate Memory Profiler. Возможности.

Понятный результат

работы

Скорость анализа

Визуализация объектов

Нахождение источника проблемы

Широкие средства

фильтрации

Page 7: Высокопроизводительные приложения на базе Windows Azure

Оптимизация. Распределенное кеширование

Web App

Кеш

Хранилище данных

Page 8: Высокопроизводительные приложения на базе Windows Azure

Какой механизм использовать ?

Windows Azure Caching Service

Memcached

Меньшая стоимость

Тесная интеграция

Скорость разворачива

ния

Более высокая

стоимость

Более высокая

производительность

Ограничение на размер

объекта

Page 9: Высокопроизводительные приложения на базе Windows Azure

Windows Azure Caching Service. Особенности.

Производительность

• Данные хранятся поблизости

• Локальное кеширование

• Любой .NET объект

• Снижение нагрузки на бд

• Простое масштабирование

• Провайдеры ASP.NET / API

• Простое управление и разворачивание

• Эластичный размер

Масштабируемость Простота

Page 10: Высокопроизводительные приложения на базе Windows Azure

Кеширование разметки.

Blob Storage

Web App

Клиенты

Worker Role

1h

index, agenda, keynote…

index, agenda, keynote…

CachedNot cached

Page 11: Высокопроизводительные приложения на базе Windows Azure

Оптимизация кода.

ORM Сервисы Database

EF Context WCF Proxy SP Tuning

Создание контекста ресурсоемкая операция. Решение: Один инстанс EF-контекста на один HTTP-запрос

Создание WCF-прокси ресурсоемкая операция. Решение: Пул прокси объектов (*ChannelFactory)

Хранимые процедуры выполняются медленно. Решение: Создание доп. индексов, оптимизация планов выполнения…..

Page 12: Высокопроизводительные приложения на базе Windows Azure

Нагрузочное тестирование. Проблема.

1)Проблема не воспроизводится2)Сайт прекрасно работает на девелоперской

машине3)Вы не представляете что за ошибка4)Предположение: сайт «умирает» во время

нагрузки5)Необходимо создать определенную нагрузку

для выявления проблемы

Page 13: Высокопроизводительные приложения на базе Windows Azure

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

Visual Studio Ultimate

Visual Studio Premium

• Web Performance Tests

• Load Tests• Load Test Rigs

• Profiling Tools• Performance Wizard

Page 14: Высокопроизводительные приложения на базе Windows Azure

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

Сохранить пользовательскую активность при помощи Web Performance Test

Имитировать нагрузку при помощи Load Tests

Имитировать большое количество пользователей при помощи Load Test Rig

Воспроизвести ошибки

Найти проблемы с кодом

Исправить код

Page 15: Высокопроизводительные приложения на базе Windows Azure

Web Performance Test.

Один из видов тестов в Visual Studio 2010 UltimateСоставная часть нагрузочных тестов

Должны эмулировать User Story

Например

Как администратор я хочу иметь возможность искать пользователей по логину и деактивировать их аккаунтыКак пользователь я хочу иметь возможность заказывать пиццу и расплачиваться кредитной картой

Page 16: Высокопроизводительные приложения на базе Windows Azure

Нагрузочное тестирование. VS Load Test.

Микс Web Performance и Unit тестов

Эмуляция активности нескольких пользователей, выполняющих определенный набор операций

Эмуляция скорости передачи данных

Эмуляция различных браузеров

Гибкая настройка количества виртуальных пользователей и механизма их добавления во время теста

Page 17: Высокопроизводительные приложения на базе Windows Azure

Зачем Unit-тест в Load-тесте ?

Удобно для тестирования WCF

Важно для Silverlight и SOA

WCF Load Test

SQL Load Test

Page 18: Высокопроизводительные приложения на базе Windows Azure

2 способа запуска нагрузочных тестов

VS 2010 Test Rig

• Используется только 1 CPU

• Лимит в 250 виртуальных пользователей

• Более правдоподобная нагрузка

• Эмуляция большего количества пользователей

Page 19: Высокопроизводительные приложения на базе Windows Azure

Лицензия на дополнительных пользователей

Microsoft Visual Studio Team System 2010 Test Load Virtual User Pack

Эмуляция до 1000 виртуальных пользователей

Page 20: Высокопроизводительные приложения на базе Windows Azure

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

Приложение

Генерация нагрузки

Координирование и

сбор результат

ов

Контроллер

Агент 1 Веб сервер

База данных

Агент 2

Агент n

КонтроллерУправление

Лицензирование

Perfmon счетчики

Агент (1…n)

Симуляция пользователей

Page 21: Высокопроизводительные приложения на базе Windows Azure

DEMO

VS Load Test Framework

Page 22: Высокопроизводительные приложения на базе Windows Azure

Windows Azure Scaling.

Frontend Backend

50 70

sqlserverlaunch.com

Medium Large

Page 23: Высокопроизводительные приложения на базе Windows Azure

Спасибо за внимание !

@feschenkoalexWindows Azure MVPhttp://feschenkoalex.blogspot.com