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

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

  • Upload
    uneta

  • View
    539

  • Download
    0

Embed Size (px)

DESCRIPTION

Презентация к докладу: «Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта». Докладчик: Александр Фещенко – MVP (SQL Azure), .Net Team Lead в DCT.В докладе будут рассмотрены методики поиска узких мест в веб-приложениях, их устранения, а также способы повышения производительности при помощи облачной инфраструктуры Windows Azure.

Citation preview

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

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

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

Проект sqlserverlaunch.com

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

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

запуск

SQL Server 2012

Проблемы:

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

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

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

возможности

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

SOAОсновная

технология

ASP.NET

Frontend

Backend

Database

Методология

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

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

Scaling Capability

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

Позволяет:

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

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

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

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

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

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

работы

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

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

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

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

фильтрации

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

Web App

Кеш

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

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

Windows Azure Caching Service

Memcached

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

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

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

ния

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

стоимость

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

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

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

объекта

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

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

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

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

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

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

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

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

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

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

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

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

Blob Storage

Web App

Клиенты

Worker Role

1h

index, agenda, keynote…

index, agenda, keynote…

CachedNot cached

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

ORM Сервисы Database

EF Context WCF Proxy SP Tuning

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

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

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

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

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

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

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

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

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

Visual Studio Ultimate

Visual Studio Premium

• Web Performance Tests

• Load Tests• Load Test Rigs

• Profiling Tools• Performance Wizard

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

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

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

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

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

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

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

Web Performance Test.

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

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

Например

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

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

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

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

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

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

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

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

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

Важно для Silverlight и SOA

WCF Load Test

SQL Load Test

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

VS 2010 Test Rig

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

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

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

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

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

Microsoft Visual Studio Team System 2010 Test Load Virtual User Pack

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

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

Приложение

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

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

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

ов

Контроллер

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

База данных

Агент 2

Агент n

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

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

Perfmon счетчики

Агент (1…n)

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

DEMO

VS Load Test Framework

Windows Azure Scaling.

Frontend Backend

50 70

sqlserverlaunch.com

Medium Large

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

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