All,
I'm not even sure where to begin looking for resources to answer my question, and I realize that speculation about this kind of thing is highly subjective.
I need help determining what class of server I should purchase to host a MS Silverlight application with a MSSQL server back-end on a Windows Server 2008 platform. It's an interactive program, so I can't simply generate a list of URLs to test against, and run it with 1000 simultaneous users.
What tools are out there to help me determine what kind of load the application will put on a server at varying levels of concurrent users?
Would you all suggest separating the SQL server form the web server, to better differentiate the generated load on the different parts of the stack?
Even though Silverlight is host on the client it will still be making calls back to your servers to get data and probably do some processing.
Rather than thinking how Silverlight is different from typical web app you should consider how it is similar (this is valid since a lot of Web apps now use AJAX which in some cases puts more requests to the server than the old postbak web form).
Anyway, start by modeling the application to see what type of traffic it generates to the server. Use something like Fiddler to see what type of traffic happens during the typical use cases. This will give you an idea of what type of web services are being called and how they are being called.
From here you can start to build test scripts that mimic the calls to these web services.
Your second question is tough to answer because it will depend on a lot of factors. You will have to do some testing to see what works best.
I don't actually have experience with silverlight, but for this question in general there are a grabbag of OK options. Most of us still tend to rely on trial&error + hunch.
LoadRunner is kinda the grandaddy but if you have to ask its out of your budget.
Keynote has a tool called KITE that is a free download. You start it up, and then within it you start an IE browser, do whatever you think a user would do, and then save the recorded session as a script. You can then upload that script to their network of servers and pay them to run it rapid fire. They'll also work to get you on the hook to pay them to help you write the scripts. They're an "enterprise-y" vendor that way so it takes budget to really get a solution in place.
Gomez has a similar service, I don't know the details as well. Its a little more utility-rate oriented in that you buy by the transactions in bulk. They can be cheaper but again be in a "thousands" mindset.
Selenium is a free/open-source tool that can be used similar to KITE, but you have to rig the clustering/clients/reporting stuff up. One of the developers also runs Browser Mob which will basically run your selenium scripts on their load servers for you for cheap.
Those can all be good for even complex ajax apps, but I honestly don't know enough about silverlight to say if they'd even work.
Like I said up front, most of us still wing it. Setup very careful monitoring and metrics collection as early as you can, and trend as users adopt the system. Start to develop rough ratio metrics for how many users can be active at once per cpu or per GB of memory or correlates to how many sql requests/second, etc. This helps you project your user capacity, shows you what your top hogs are, and shows you when all of a sudden a metric spikes the chart because of a change you made.