Оптимизация производительности ASP .NET MVC приложений

Post on 05-Feb-2016

152 views 1 download

description

Оптимизация производительности ASP .NET MVC приложений. Сергей Руденко Sr. Software Engineer at AWS MCPD srudenko.wordpress.com | srudenko@live.ru | @srudenko. Параметры оценки производительности. Сервер Время формирования страницы Количество запросов в секунду - PowerPoint PPT Presentation

Transcript of Оптимизация производительности ASP .NET MVC приложений

Microsoft TechDayshttp://www.techdays.ru

Оптимизация производительности ASP .NET MVC приложений

Сергей РуденкоSr. Software Engineer at AWSMCPD

srudenko.wordpress.com | srudenko@live.ru | @srudenko

Microsoft TechDayshttp://www.techdays.ru

Параметры оценки производительности

СерверВремя формирования страницыКоличество запросов в секундуОбъем передаваемых данных

КлиентВремя обработки страницы на клиентеи т.д.

Microsoft TechDayshttp://www.techdays.ru

Определение требований к производительности

Что будем тестировать? (/home/index)

Задать требования:Время выполнения или TTLBКоличество запросов в секунду + количество пользователейЧастота обращений к внешним ресурсам(база, прочие сервисы и т.д.)

Microsoft TechDayshttp://www.techdays.ru

Определение требований к производительности

/home/indexВремя обработки страницы – 1 секДо 100 запросов/сек к веб-серверуДо 200 запросов/сек к базе данных

Microsoft TechDayshttp://www.techdays.ru

План тестирования

Создание сценария тестированияНастройка тестаВыполнение тестаАнализ результатов

Microsoft TechDayshttp://www.techdays.ru

Настройка и проведение тестирования

Демонстрация

Microsoft TechDayshttp://www.techdays.ru

Анализ результатов

Microsoft TechDayshttp://www.techdays.ru

Анализ результатов

Microsoft TechDayshttp://www.techdays.ru

Наиболее частые проблемы

База данныхмного запросовне оптимизированные запросыORM ?

Microsoft TechDayshttp://www.techdays.ru

Компиляция в Release

Компиляция в Release mode! Как проверить: isis.codeplex.com

PM> Install-Package isis

Microsoft TechDayshttp://www.techdays.ru

Определение версий сборок

Демонстрация

Microsoft TechDayshttp://www.techdays.ru

Кэширование выходного потока

Кэширование выходного потока[OutputCache] атрибут Применим:

Кэширование Action-методовКэширование контроллеров

Что можно кэшировать

WIN!!!

Что нельзя кэшировать

FAIL

Microsoft TechDayshttp://www.techdays.ru

Кэширование выходного потока

Демонстрация

Microsoft TechDayshttp://www.techdays.ru

Кэширование данных

Используется, где не работает OutputCache Кэширование через SQL Dependency или короткий период времени

Microsoft TechDayshttp://www.techdays.ru

Кэширование данных

Демонстрация

Microsoft TechDayshttp://www.techdays.ru

Запись данных

Избегать блокировок при записиАсинхронная обработка на сервереАсинхронные Ajax запросы от клиентаОтложенная обработка

Microsoft TechDayshttp://www.techdays.ru

Профилирование приложений

VS Performance Analyzer (MS)dotTRACE (JetBrains)ANTS Performance Profiler (Redgate)и т.д.

Microsoft TechDayshttp://www.techdays.ru

Профилирование приложений

Microsoft TechDayshttp://www.techdays.ru

Профилирование приложений

Microsoft TechDayshttp://www.techdays.ru

Сравнение View Engines

MVC 2 Template on MVC 28135 Requests/sec

MVC 2 Template on MVC 37987 Requests/sec

MVC 3 WebformsView Engine on MVC 37457 Requests/sec

MVC 3 Razor View Engine on MVC 37136 Requests/sec

http://blogs.msdn.com/b/marcinon/archive/2011/01/17/mvc-3-performance.aspx

Microsoft TechDayshttp://www.techdays.ru

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

Отключить неиспользуемые View Engines

Html.EditorFor, Html.DisplayFor вседа ищут подходящий темплейтУдалить не используемые Views

Отключение ViewEngines

Microsoft TechDayshttp://www.techdays.ru

… а также

Не передавать NULL в строго типизированную View

Html.TextBoxFor(m => m.Name) вызовет NullReferenceExceptionИсключение будет поймано и обработано, но негативно скажется на производительности

NULL и View

Контроллер

View

Microsoft TechDayshttp://www.techdays.ru

Результат

http://stevesmithblog.com/blog/improving-asp-net-mvc-application-performance-at-mvcconf/

Страниц/сек Время страницы (ms)

0

50

100

150

200

250

300

Без настроекRelease ModeNULL и ViewViewEnginesOutputCache

Microsoft TechDayshttp://www.techdays.ru

Дополнительные материалыи ссылки

http://stevesmithblog.com/blog/improving-asp-net-mvc-application-performance-at-mvcconf/http://stevesmithblog.com/blog/introducing-the-cachedrepository-pattern/http://stevesmithblog.com/blog/building-a-cachedrepository-via-strategy-pattern/http://blogs.msdn.com/b/marcinon/archive/2011/01/17/mvc-3-performance.aspxhttp://blogs.msdn.com/b/marcinon/archive/2011/02/07/mvc-performance-tips.aspxhttp://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cshttp://www.asp.net/mvc/tutorials/adding-dynamic-content-to-a-cached-page-cshttp://mvcmusicstore.codeplex.com/http://isis.codeplex.com/

Microsoft TechDayshttp://www.techdays.ru

Questions?

Сергей Руденкоsrudenko@live.rusrudenko.wordpress.com@srudenko

Microsoft TechDayshttp://www.techdays.ru