Оптимизация производительности ASP .NET MVC приложений
description
Transcript of Оптимизация производительности ASP .NET MVC приложений
![Page 1: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/1.jpg)
![Page 2: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/2.jpg)
Microsoft TechDayshttp://www.techdays.ru
Оптимизация производительности ASP .NET MVC приложений
Сергей РуденкоSr. Software Engineer at AWSMCPD
srudenko.wordpress.com | [email protected] | @srudenko
![Page 3: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/3.jpg)
Microsoft TechDayshttp://www.techdays.ru
Параметры оценки производительности
СерверВремя формирования страницыКоличество запросов в секундуОбъем передаваемых данных
КлиентВремя обработки страницы на клиентеи т.д.
![Page 4: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/4.jpg)
Microsoft TechDayshttp://www.techdays.ru
Определение требований к производительности
Что будем тестировать? (/home/index)
Задать требования:Время выполнения или TTLBКоличество запросов в секунду + количество пользователейЧастота обращений к внешним ресурсам(база, прочие сервисы и т.д.)
![Page 5: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/5.jpg)
Microsoft TechDayshttp://www.techdays.ru
Определение требований к производительности
/home/indexВремя обработки страницы – 1 секДо 100 запросов/сек к веб-серверуДо 200 запросов/сек к базе данных
![Page 6: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/6.jpg)
Microsoft TechDayshttp://www.techdays.ru
План тестирования
Создание сценария тестированияНастройка тестаВыполнение тестаАнализ результатов
![Page 7: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/7.jpg)
Microsoft TechDayshttp://www.techdays.ru
Настройка и проведение тестирования
Демонстрация
![Page 8: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/8.jpg)
Microsoft TechDayshttp://www.techdays.ru
Анализ результатов
![Page 9: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/9.jpg)
Microsoft TechDayshttp://www.techdays.ru
Анализ результатов
![Page 10: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/10.jpg)
Microsoft TechDayshttp://www.techdays.ru
Наиболее частые проблемы
База данныхмного запросовне оптимизированные запросыORM ?
![Page 11: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/11.jpg)
Microsoft TechDayshttp://www.techdays.ru
Компиляция в Release
Компиляция в Release mode! Как проверить: isis.codeplex.com
PM> Install-Package isis
![Page 12: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/12.jpg)
Microsoft TechDayshttp://www.techdays.ru
Определение версий сборок
Демонстрация
![Page 13: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/13.jpg)
Microsoft TechDayshttp://www.techdays.ru
Кэширование выходного потока
Кэширование выходного потока[OutputCache] атрибут Применим:
Кэширование Action-методовКэширование контроллеров
![Page 14: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/14.jpg)
Что можно кэшировать
WIN!!!
![Page 15: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/15.jpg)
Что нельзя кэшировать
FAIL
![Page 16: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/16.jpg)
Microsoft TechDayshttp://www.techdays.ru
Кэширование выходного потока
Демонстрация
![Page 17: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/17.jpg)
Microsoft TechDayshttp://www.techdays.ru
Кэширование данных
Используется, где не работает OutputCache Кэширование через SQL Dependency или короткий период времени
![Page 18: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/18.jpg)
Microsoft TechDayshttp://www.techdays.ru
Кэширование данных
Демонстрация
![Page 19: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/19.jpg)
Microsoft TechDayshttp://www.techdays.ru
Запись данных
Избегать блокировок при записиАсинхронная обработка на сервереАсинхронные Ajax запросы от клиентаОтложенная обработка
![Page 20: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/20.jpg)
Microsoft TechDayshttp://www.techdays.ru
Профилирование приложений
VS Performance Analyzer (MS)dotTRACE (JetBrains)ANTS Performance Profiler (Redgate)и т.д.
![Page 21: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/21.jpg)
Microsoft TechDayshttp://www.techdays.ru
Профилирование приложений
![Page 22: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/22.jpg)
Microsoft TechDayshttp://www.techdays.ru
Профилирование приложений
![Page 23: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/23.jpg)
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 приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/24.jpg)
Microsoft TechDayshttp://www.techdays.ru
Производительность MVC
Отключить неиспользуемые View Engines
Html.EditorFor, Html.DisplayFor вседа ищут подходящий темплейтУдалить не используемые Views
![Page 25: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/25.jpg)
Отключение ViewEngines
![Page 26: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/26.jpg)
Microsoft TechDayshttp://www.techdays.ru
… а также
Не передавать NULL в строго типизированную View
Html.TextBoxFor(m => m.Name) вызовет NullReferenceExceptionИсключение будет поймано и обработано, но негативно скажется на производительности
![Page 27: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/27.jpg)
NULL и View
Контроллер
View
![Page 28: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/28.jpg)
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 приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/29.jpg)
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 31: Оптимизация производительности ASP .NET MVC приложений](https://reader030.fdocuments.co/reader030/viewer/2022033012/56815a62550346895dc7a2ee/html5/thumbnails/31.jpg)
Microsoft TechDayshttp://www.techdays.ru