At VTdotNET’s last meeting, we were happy to have Jeff McWherter share with us his hard-earned lessons about improving performance in asp.net apps. Jeff spends a lot of time dealing with this in his job and it was very obvious that he wasn’t just sharing something he read about, but his very adept experience.
He started out by posing what may seem a redundant question, but is a really good way of getting people to focus on the issues. He asked for someone to explain the difference between web site performance and web site scalability.
These were the two topics he focused on as he delved into a number of performance bottlenecks as well as issues which prevent websites from being able to scale out. Jeff used a variety of performance measurement tools in the process which was very educational. Sure beats waiting for the server to come to it’s knees as an indication that some changes might need to be made! Then of course he showed us lots of ways, some very simple, some more complex, to solve the problems displayed by the tools.
Often people focus on their specific asp.net code and don’t consider out of scope processes that may be causing the problems such as a database query or a file download. I was happy that he made sure people were aware of SQLProfiler!
One of the tips that really hit home for me, because I was dealing with this problem, was if you have file download/upload functions in your application, split those off to another process, whether you can do that on another server or just in another app on your web server (e.g a web service). It’s not just the time involved (which can be helped also by doing this asynchronously) but the resources involved. If multiple people are uploading or downloading at the same time, this could really pose a problem.
In these days where many of us are scrambling to learn the new technologies that are coming down the pipe, it is a huge benefit to have someone show us how to get more out of the tools that we are working with today with lessons that will apply to the tools of the future.
The day after the meeting, Jeff and his wife (who had spent a fun few days with us at our house) headed off to Smuggler’s Notch to do some ice climbing and then were going to be on vacation for a while after that visiting friends around the Northeast.
I think he’s back in Michigan now, so I’ll be sure to get his list of resources from him and up on the VTdotNET site.
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!
2 thoughts on “ASP.NET Perf and Optimization lessons from Jeff McWherter”
I think webservices are not a good choice for implementing upload/download of files especially if they are binary type due to performance concerns. I would go with remoting. What would you suggest?
One good way to minimize the impact of uploading files is to use an optimized ASP.NET upload component such as my SlickUpload solution. It optimizes upload handling, especially on .NET 1.1, as well as providing a rich AJAX progress bar for users. You can find more information here: krystalware.com/…/slickupload