• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Improving ASP.NET MVC Application Performance
 

Improving ASP.NET MVC Application Performance

on

  • 17,171 views

You've built an ASP.NET MVC application, but now you want it to go faster and serve more concurrent user requests. In this session, we'll look at some of the common performance problems ASP.NET MVC ...

You've built an ASP.NET MVC application, but now you want it to go faster and serve more concurrent user requests. In this session, we'll look at some of the common performance problems ASP.NET MVC applications may encounter, and how to diagnose and correct them, using Visual Studio 2010's testing tools.

Presented 8 Feb 2010 at MVCConf.com.

Statistics

Views

Total Views
17,171
Views on SlideShare
17,171
Embed Views
0

Actions

Likes
11
Downloads
237
Comments
2

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Hi Steven

    Great presentation, thanks

    We've also had issues with slow performance with some MVC apps, so I put together a complete list with code examples.

    Please take a look and let me know what you think:

    http://www.robertsindall.co.uk/blog/how-to-improve-mvc-application-performance/

    Robert
    Are you sure you want to
    Your message goes here
    Processing…
  • Well presented! Here I’d add one more point that app performance can be enhanced by caching. Caching is incredible tool for performance enhancement and if scalability is also a concern then distributed caching is perfect technique. Any third party Distributed Cache (Like NCache) can be used.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Improving ASP.NET MVC Application Performance Improving ASP.NET MVC Application Performance Presentation Transcript

    • Improving ASP.NET MVC Application Performance Steve Smith The Code Project SteveSmithBlog.com | @ardaliswww.mvcConf.com
    • Defining Performance Metrics• Page Execution Time• Requests/Sec• TTLB www.mvcConf.com
    • Defining Performance Requirements• A given web request (/Home/Index)• Must return within a given time (TTLB or Page Execution Time)• Under a given load (Requests/Sec + Active Users)• Given system characteristics (50k records)• Resource constraints (< 400 database server requests/sec) www.mvcConf.com
    • Performance Requirement• /Home/Index• Must return within 1s Page Execution Time• Given 100 request/sec and base database• With < 200 database requests/sec www.mvcConf.com
    • Measure Baseline• Record the Scenario• Set up the Load Test• Run the Test• Analyze the Results www.mvcConf.com
    • Baseline Measurement: MVC Music StoreDEMOwww.mvcConf.com
    • www.mvcConf.com
    • Find the Slowest Pageswww.mvcConf.com
    • Tuning a Web Application Define Goal Meets Goal Measure System Stop Does Not Meet Goal Form Hypothesis; Change Only One Thing! Alter Systemwww.mvcConf.com
    • Most Common Performance Problems• Database – Too many queries – Queries Not Optimized• Network Requests – From Server to Services – From Browser to Web Server www.mvcConf.com
    • Simple but Important• Be sure production DLLs are compiled in Release mode!• Isis.CodePlex.com (still alpha) www.mvcConf.com
    • Caching• Output Caching – [OutputCache] attribute – Applies to • Action methods within Controller • Or Entire Controller www.mvcConf.com
    • Identify Pages To Cachewww.mvcConf.com
    • Applying Output CachingDEMOwww.mvcConf.com
    • www.mvcConf.com
    • Add Data Caching• Apply to Read operations• Use where Output Caching can’t be used• Consider applying at Repository level• Consider using Sql Cache Invalidation or short cache duration www.mvcConf.com
    • What About Writes?• Avoid blocking on writes – Send messages – Use Async calls on server – Use Async/Ajax calls from client• Logically partition reads and writes – Command Query Responsibility Separation (CQRS) www.mvcConf.com
    • Other Tools: Profilingwww.mvcConf.com
    • Tier Interactionswww.mvcConf.com
    • What about Async?• Async Actions• AsyncController• Improves scalability• May improve performance www.mvcConf.com
    • Comparing MVC and View Engines• MVC 2 Template on MVC 2 – 8135 Requests/sec• MVC 2 Template on MVC 3 – 7987 Requests/sec• MVC 3 Webforms View 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 www.mvcConf.com
    • MVC 3 Performance• Unobtrusive client-side validation on by default• Razor view engine imposes small cost over webforms view engine• Performance improved for: – Expression caching (lambdas) – URL generation – Action lookup – Filter invocation www.mvcConf.com
    • MVC Gotchas• Avoid HttpResponse.WriteSubstitution() – Contents may be incorrectly cached – http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx – May work with MVC3 + ASPX; not supported; definitely not w/Razor• RenderAction() Cache Bug – Calling an action with OutputCache attribute may result in entire page being cached – http://haacked.com/archive/2009/05/12/donut-hole-caching.aspx www.mvcConf.com
    • MVC Performance TipsDisable Unused View Engines• Html.EditorFor, Html.DisplayFor always look for templates for each view engine• Save extra “misses” to disk by removing unused view engines. www.mvcConf.com
    • Remove Unused View Engineswww.mvcConf.com
    • MVC Performance TipsAvoid Passing Null to Strongly Typed Views w/Helpers• Helpers like Html.TextBoxFor(m => m.Name) will throw NullReferenceException• Exceptions will be caught/ignored, but may add up to negative performance impact www.mvcConf.com
    • Avoid Passing Null to Viewwww.mvcConf.com
    • MVC Performance TipsUninstall IIS UrlRewrite Module• If no applications on the server are using it• No effect in MVC apps before v3• Enhances speed of URL generation www.mvcConf.com
    • Uninstall UrlRewrite (if not used)www.mvcConf.com
    • Applying Performance FixesDEMOwww.mvcConf.com
    • Summary of Perf Gains300250200 Base Release Mode150 No Null ViewModel100 1 ViewEngine 50 OutputCache 0 Pages/Sec Page Time (ms) www.mvcConf.com
    • Summary• Set Goals – Don’t Optimize Prematurely• Measure and Tune Scientifically• Look for big wins first• Watch out for Gotchas and apply Tips www.mvcConf.com
    • References• 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/ www.mvcConf.com
    • Questions?Tweet Your Questions to:@ardalis How do I…? #mvcconfSteve Smithssmith@lakequincy.comSteveSmithBlog.comTwitter: @ardalis www.mvcConf.com