31

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

  • Upload
    ludlow

  • View
    147

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Microsoft TechDayshttp://www.techdays.ru

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

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

srudenko.wordpress.com | [email protected] | @srudenko

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

PM> Install-Package isis

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

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

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

WIN!!!

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

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

FAIL

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

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

Microsoft TechDayshttp://www.techdays.ru

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

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

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

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

Отключение ViewEngines

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

Microsoft TechDayshttp://www.techdays.ru

… а также

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

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

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

NULL и View

Контроллер

View

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

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

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

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/

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

Microsoft TechDayshttp://www.techdays.ru

Questions?

Сергей Руденко[email protected]@srudenko

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

Microsoft TechDayshttp://www.techdays.ru