I've written a basic implementation and started working on performance, first I needed a load.
I've found Apache JMeter, one of the best web load testing programs I've worked with so far, I could send a custom HOST header, do multiple logins, multiple cookies, basically test every page on the website for problems.
|Taken from http://www.java-forums.org/blogs/jmeter/|
But the results don't tell you much, if your home Action is slow, cool, I can see it, if the application takes 100% CPU, cool, I can see that too, but what's causing the slow downs?
This is where Visual Studio's Performance Profiler comes in.
My project has a lot of dependent projects, its ok if you see a WCF call is slow, but seeing exactly what's executing slowly is even more valuable.
At first I've tried using the Wizard, but every time I started profiling Visual Studio would hang, my solution? Attach/Detach, once the project has started with all its components also running, right-click on the Profiling session, Attach-Detach and attach the desired projects, then on Modules view, you can drill down application->method->method until you know exactly what's going on.
For example, when you're looking at Functions section, it shows you all the functions it caught, Inclusive is if the method is up in the stack and exclusive is if that specific method is the slow part, look at both, it will give you an overview on the problems, the exclusive will show you specific methods and the inclusive will show you certain paths in the execution tree which are slow in your applications.
I can't thank Microsoft enough for including this great tool, it saved me countless hours and helped me deliver a high quality and performing code.