This is a quick tutorial on how to use WCAT to benchmark a web server. First, get the IIS 6.0 Resource Kit which includes the WCAT Client and Controller. Then, on your client machines that will help simulate load, do the following:
- Install the Resource Kit you just downloaded (you don't need to install it on your web server).
- Run "%ProgramFiles%\IIS Resources\WCAT Client\client.reg" to tweak some TCP/IP registry settings that will enable the client machines to make a lot of connections per second, etc. Again, you don't need to do this on the web server itself.
- Pick one of the client machines to be the "controller" and run the following on each machine (including the controller itself):
cd /d "%ProgramFiles%\IIS Resources\WCAT Client"
clientloop.cmd <hostname or IP of controller machine>
On the controller machine, create a script.ubr file with the following contents:
[Configuration]
WarmupTime 5s
# Set this to the total number of client machines
NumClientMachines 2
MaxRecvBuffer 64K
CooldownTime 5s
ThinkTime 0
# Set this to how many clients each actual machine should simulate
NumClientThreads 10
Duration 30s
Comment script.ubr script
CloseMethod RESET
ConnectEx TRUE
AsynchronousWait TRUE
[Script]
# Try benchmarks with this TRUE or FALSE
SET KeepAlive = FALSE
SET Port = 80
NEW TRANSACTION
classId = 1
Weight = 100
NEW REQUEST HTTP
# Set this to the file to request from the server
URL = "/"
To run the benchmark, run the following on the controller machine:
- "%ProgramFiles%\IIS Resources\WCAT Controller\wcctl.exe" -a <web server hostname or IP address> -z <path to script.ubr>
During the test, information will be output from wcctl.exe and also on the client machines. When the test is complete, a summary will be written to "%ProgramFiles%\IIS Resources\WCAT Controller\wcctl.exe.log.log" on the controller machine.
Tips:
- To benchmark static file requests, but not using kernel caching, try accessing a directory URL like "/subdir/" instead of "/subdir/default.htm". Accessing "/subdir/" does not use kernel caching, but accessing "/subdir/default.htm" does use kernel caching. More info.
- When benchmarking ASP.NET, try with and without Page Output Caching. When benchmarking Page Output Caching, try changing the VaryByParam value.