1 / 31

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

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

ludlow
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Оптимизация производительности ASP .NET MVC приложений Сергей Руденко Sr. Software Engineerat AWS MCPD srudenko.wordpress.com | srudenko@live.ru | @srudenko

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

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

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

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

  6. Демонстрация Настройка и проведение тестирования

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

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

  9. Наиболее частые проблемы • База данных • много запросов • не оптимизированные запросы • ORM ?

  10. Компиляция в Release • Компиляция в Release mode! • Как проверить: isis.codeplex.com • PM> Install-Package isis

  11. Демонстрация Определение версий сборок

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

  13. Что можно кэшировать WIN!!!

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

  15. Демонстрация Кэширование выходного потока

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

  17. Демонстрация Кэширование данных

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

  19. Профилирование приложений • VS Performance Analyzer (MS) • dotTRACE (JetBrains) • ANTS Performance Profiler (Redgate) • и т.д.

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

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

  22. Сравнение View Engines • MVC 2 Template on MVC 2 • 8135 Requests/sec • MVC 2 Template on MVC 3 • 7987 Requests/sec • MVC 3 WebformsView Engine on MVC 3 • 7457 Requests/sec • MVC 3 Razor View Engine on MVC 3 • 7136 Requests/sec http://blogs.msdn.com/b/marcinon/archive/2011/01/17/mvc-3-performance.aspx

  23. Производительность MVC • Отключить неиспользуемые View Engines • Html.EditorFor, Html.DisplayForвседа ищут подходящий темплейт • Удалить не используемые Views

  24. Отключение ViewEngines

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

  26. NULL и View Контроллер View

  27. Результат http://stevesmithblog.com/blog/improving-asp-net-mvc-application-performance-at-mvcconf/

  28. Дополнительные материалыи ссылки • 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.aspx • http://blogs.msdn.com/b/marcinon/archive/2011/02/07/mvc-performance-tips.aspx • http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs • http://www.asp.net/mvc/tutorials/adding-dynamic-content-to-a-cached-page-cs • http://mvcmusicstore.codeplex.com/ • http://isis.codeplex.com/

  29. Questions? Сергей Руденко srudenko@live.ru srudenko.wordpress.com @srudenko

More Related