Download: wcat.doc
The NT Performance team just publically released the latest version of WCAT (Web Capacity Analysis Tool), the web performance test tool that the IIS team and NT Performance team use to conduct internal performance and scalability testing of IIS and ASP.NET.
******************************
UPDATE 1/24/2008: Updated WCAT 6.3 build is available that fixes the “NULL Controller Specified” error. The build is available immediately at the existing download links. For more info, see https://mvolo.com/blogs/serverside/archive/2008/01/24/Updated-WCAT-6.3-released.aspx.
******************************
This tool is available for download from the IIS.NET download center, and includes detailed documentation you need to use it:
This version replaces the antiquated WCAT 5.2 released in the IIS6 Resource Kit.
The tool enables a script of http requests to be executed against a web server from 1 or more client machines, which are automatically coordinated from a single controller that kicks off, manages, and collects the data from the performance run. This allows much greater request loads to be tested then possible by running a single http client on a single machine.
Among other things, the tool supports:
- scripting complicated http transactions, with randomness
- collection perf counter data from the server
- generating rich reports
I’ve personally used this tool to do heavy performance testing for IIS, and like the flexibility and ease of adding multiple client machines to up the request load and really push the server to the 100%%%% CPU mark.
The documentation included in the tool has a great reference for using the tool, and writing the WCAT scripts. You can download the documentation online here: WCAT 6.3 Documentation (it is also included in the WCAT installation in the “doc” folder).
Let me know if you are checking the tool out, and how it goes. I will be posting more walkthrough information and some sample scripts soon.
Thanks,
Mike
Anonymous
The NT Performance team just publically released the latest version of WCAT (Web Capacity Analysis Tool),
Anonymous
The NT Performance team just publically released the latest version of WCAT (Web Capacity Analysis Tool
Anonymous
It’d be really nice to have some sort of GUI for this tool. Or a recorder … or heck open source it. There’s a definte hole in this space.
Anonymous
The latest version of WCAT (Web Capacity Analysis Tool – the web performance test tool that the IIS team
Anonymous
Is there a reason why WAST was been not updated vs. a command line tool?
Mike Volodarsky
Steve,
I am not sure whether WAST is being maintained internally – WCAT is being actively developed and is used by the Windows performance team and by the IIS team to do performance testing, so we thought it would be great to release the tool publicly for customers to do performance testing.
Is there something particular about WAST that you are interested in?
Mike
Anonymous
セミナーでWebサーバーに負荷をかけるツールとしてWCATを紹介していますが、そのフォローを少ししておかないといけませんね。 IIS Resource Kit に入っているWCATはV5.2というもので、最近もっと新しいものがリリースされています。
Anonymous
WAST is still great to do some fast testings…
But I miss the ability to script for e.g. forms logon.
Anonymous
Any comparison benchmarks with Visual studio Load testing tool?
Mike Volodarsky
Sanjay,
I dont have any comparison information right now, but I’ll be playing with the VS tools in the near future and post something …
Thanks,
Mike
Anonymous
Using WCAT 6.3 I cannot get the global portion of the library subsection to work.
codeblock
library {
name = “DDL.dll”;
global {
initialize = “somefunctionname”;
}
Causes wcclient to crash with syntax error, or at best what I can call a syntax error:
“Invalid code recieved” from the wcctl.exe
Anonymous
I am trying to connect me to a web server that supports to SSL and working, the configuration that I am using is the following:
scenario
{
name = “Test SSL”;
warmup = 30;
duration = 120;
cooldown = 20;
default
{
// send keep-alive header
setheader
{
name = “Connection”;
value = “keep-alive”;
}
// set the host header
setheader
{
name = “Host”;
value = server();
}
// HTTP1.1 request
version = HTTP11;
// keep the connection alive after the request
close = ka;
}
transaction
{
id = “Test SSL”;
// weight = 1;
request
{
secure = true;
// protocol = SSL3;
// port = 443;
// algorithms = RSA_RC4_128_SHA;
// RSA_RC4_128_MD5
// handshake = full;
verb = GET;
url = “/signonTC.asp”;
statuscode = 200;
}
//
// specifically close the connection after both files are requested
//
close
{
method = graceful;
}
}
}
the error that appears to me is the following one
thanks for its aid…
PS C:wcat> ./wcclient
Controller: localhost
Wait for controller: false
IPv6: false
Bind Address: not specified
It is suggested that the following registry key be set to the
appropriate value before running wcclient. The test will continue,
however you may experience connection establishment issues.
Key: HKLMSystemCurrentControlSetServicesTCPIPParametersMaxUserPort
Type: REG_DWORD
Value: 0xfffe
Resolving server www2.todo1.com…
MESSAGE: adding 200.3.3.156 to the list of resolved servers.
NULL controller specified.
PS C:wcat>
Anonymous
It determines that the error appears when in the PC you have installed Visual Studio 2005, after the installation of this product the error that appears is the following one:
PS C:wcat > ./wcclient l3agn70 – b
Unable to create logfile.
Controller: l3agn70
For Wait to controller: true
IPv6: false
Bind Address: not specified
It is suggested that the following registry key sees Seth to the
appropriate VALUE before running wcclient. The test will continues,
however you may experience connection establishment issues.
Key: HKLM System CurrentControlSet Services TCPIP Parameters MaxUserPort
Type: REG_DWORD
VALUE: 0xfffe
Resolving server gwxml.bancomercantil.com…
MESSAGE: adding 10.0.4.164 to the list of you solve server.
Test settings…
Warmup: 30
Duration: 120
Cooldown: 20
Server: gwxml.bancomercantil.com
Virtual Clients: 30
Threads: 2
Test beginning…
Virtual Starting 1 client every 0,500000 seconds.
f:ntvbl _core_perf_utilities sdktools wcat client httpsreq.c@422: Error during InitializeSecurityContext.
NULL to controller specified.
PS C:wcat >
I am going to apply to the SP1 in Visual studio 2005 to see if the continuous error.
Thank
Anonymous
Trying to get WCAT 6.3 running in test, but wcclient.exe keeps dying with a “NULL controller specified” after resolving and connecting to my controller! It wcctl.exe reports an “error 10054 was encountered cr/lf Error receiving code. cr/lf Error accepting remote connection”.
I’ve played with DNS, (everything can resolve) permissions (local admin everywhere) and even a fresh new machine with no firewall, to no avail. Any help appreciated!
Anonymous
Has anyone else run into problems when specifying the -clients command line attribute?
In the LaunchClients function in wcat.wsf, I had to change:
commandline = CLIENT_COMMAND_LINE + ” ” + hostname + ” -b”;
to
commandline = “////” + clients[i] + TARGET_SHARE + “wcclient.exe” + hostname + ” -b”;
in order to get it to loop through the array of clients. Without doing that, it just always used localhost.
Anonymous
I have the same problem like Daryl’s. wcclient.exe dies with “NULL controller specified.” Have anyone managed to succeed?
Anonymous
We have a fix for the NULL controller specified issue. We will need to package it up and re-release it. Mike will update the blog when it is done.
Anonymous
Hi: I posted on IIS.net but didn’t get a response.
I went through the docs and tried to configure it with a basic settings and test script, but when I run it from the command line it doesn’t seem to do anything.
It echoes back the server to be tested, and the number of clients, and then just sits there? Eventually I have to control-c to kill it.
Anonymous
Anonymous
MSCOM OPS with Microsoft.com, WS08, IIS7, and the Lone Server Last week I had a post about the "Lone
Anonymous
MSCOM OPS with Microsoft.com, WS08, IIS7, and the Lone Server Last week I had a post about the "Lone
Anonymous
The original release of WCAT 6.3 contained a bugs that was causing many users to not be able to use the
Mike Volodarsky
Hi guys,
Thanks for reporting the issues. They’ve been identified and should be fixed – the updated build will be available shortly from the download center.
You can read more about it here: http://mvolo.com/blogs/serverside/archive/2008/01/24/Updated-WCAT-6.3-released.aspx (live tomorrow).
Thanks,
Mike
Anonymous
Mike, did you publish any “walkthrough information and sample scripts” yet?
Thanks,
Martyn
Mike Volodarsky
Hi Martyn,
Unfortunately I havent gotten a chance to do this yet. … Did you have a specific question I can answer?
Thanks,
Mike
Anonymous
I would just like to install and try out WCAT on one machine. (I know the results will not mean much) The instrucions seem long and complex. Is there a quick setup or is it easier than it looks?
Mike Volodarsky
Hi Martyn,
It’s fairly easy. You can use the installer to install it on the controller machine. Then, if you need to install it on other machines that will act as clients, you can use the following command (assuming the firewall is open, you are running the cmd as Administrator, and Administrator account has a syncronized password on all computers involved):
wcat.wsf –terminate –update –clients {comma separated client list, including localhost if its to be a client}
To run a test, you’ll need to make a scenario file that defines the requests you’d like to make. You can use the included sample scenario file and the documentation to create it.
Thanks,
Mike
Anonymous
Is there a support newsgroup for WCAT?
Mike Volodarsky
Hi Martyn,
That’s a good idea – we are creating one on IIS.NET!
Thanks,
Mike
Anonymous
The IIS 7.0 Resource Kit Book is finally out! Ok, it’s been out for almost 2 months, but somehow
Anonymous
I have try to run wcat on XP Pro but when I run: ‘wcat.wsf -terminate -run -clients {localhost} -t {localStart.ubr} -f {setting.ubr} -s {localhost} -singleip -x’
(localStart.ubr is home.ubr)
Windows show message: “wcctl.exe has encountered a problem and needs to close. We are sorry for the inconvenience.”
Please help!
Anonymous
Is there any way to use a client certificate for HTTPS requests?
Anonymous
I’m running wcat and all responses are 400 errors. Any idea on what would cause this?
Please help.
Anonymous
I have the same problem with errors. I run wcat controller and client on a single machine. The test is running but the result is: “unexpected errors: 455” which is actually number of all responses. I think problem is that i want to test asp.net application(.net 2.0) and I dont know what value I should put in settings file. If i write: server= “192.168.11.43” the test runs with errors. But this is only IP of computer, not the webserver. If i write: localhost:1587/WebSite4, the test is not running because the controller cant resolve the the server address. Can anybody help? thanks.
Anonymous
I’ve found that in our network WAN accelerators have made a big difference
Anonymous
Ok, problem solved. If you want to test your asp.net application you need to add the project to virtual path in iis. Control panel -> administrative tools -> internet information services -> your PC -> default websites -> add new virtual directory. Here navigate to home directory of your project(where default.aspx is located). It is also very important to set access rights to this folder: in security tab add all users using computer. Click Add, and in the field write: YOUR_COMP_NAMEUsers. OK. Now you can test this url: http://localhost/alias/Default.aspx. //alias is a name for your app, that you typed in IIS.
Anonymous
Hi, Can I send a postdata with wcat and make the tested webserver to do something with them? e.g i want to post some textbox value and on button_click i want to write this value to database. The crucial is button click. How can make a webserver execute my button_click function. Is something like that possible? thanks.
Anonymous
Hi,
I have problems running a very simple senario.
After running, the wcat.wsf , it echoes the server name and clients number and just sits there. I had to kill it as it is not producing any log file.
here is the command line –>
——————-
C:Program Fileswcat>wcat.wsf -terminate -run -setclients -clients localhost -t samplesscriptsh
ome.ubr -v 3 -s “http://www.yahoo.com” -o yahootest.xml -singleip -x
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
wcat.wsf – WCAT Utility Script
Copyright (c) 1995-2007 Microsoft Corporation.
message: Parsing parameters…
parameter: terminate
parameter: run
parameter: setclients
parameter: clients = localhost
parameter: {wcctl.exe command line} = -t samplesscriptshome.ubr -v 3 -s http://www.yahoo.com -o
yahootest.xml -singleip -x -clients 1
message: updating Clients registry key…
message: setting localhostHKLMSoftwareWCATClients = localhost
message: Terminating all instances of wcclient…
message: Terminating all local instances of wcctl.exe…
message: Launching wcclient.exe on all clients…
message: starting wcclient.exe on localhost with command line of localhostadmin$wcatwcclient.e
xe RAVIKOLLI -b…
message: executing ‘”C:Program Fileswcatwcctl.exe” -t samplesscriptshome.ubr -v 3 -s http://ww
w.yahoo.com -o yahootest.xml -singleip -x -clients 1’…
Initializing performance counters…
‘http://www.yahoo.comProcessor(_Total)% Processor Time’… Success!
‘http://www.yahoo.comProcessor(_Total)% User Time’… Success!
‘http://www.yahoo.comProcessor(_Total)% Privileged Time’… Success!
‘http://www.yahoo.comSystemContext Switches/sec’… Success!
Performance counter initialization complete.
Server: http://www.yahoo.com
Clients: 1
———————————————-
inside home.ubr, I am just calling only 1 transaction request for url=”/” . That’s all.
Can u see any issues here in setup?
Thanks
Rob
Anonymous
Ok I solved the problem. I needed to use the verb=GET; delete the line postdata=; and then create a query_string with postdata from mojedata.txt. So the result is: verb=GET; url = "http://localhost/testova/Default.aspx?__VIEWSTATE… tx2=sdgfg&TextBox1=&TextBox2=&drop1=&b2=Vloz&TextBox3=&TextBox4="; notice that beside normal form postdata(Textboxes, radiobuttons) there are also defaultly hidden viewstate and eventvalidation data. These are asp encrypted data which normally you cant see. All you need is to add before body element in your asp website and then run your application in browser, fill the form, click the submit button and in the url box in browser you will see the whole query_string. Just copy and paste and you are done. Just need to do that every time after you restart IIS.
Anonymous
I am trying to run the wcat, and I am getting parameter missing error…
C:PROGRA~1wcat>wcat.wsf -terminate -run -clients {localhost} -t {home.ubr} -f
{settings.ubr} -s {localhost} -singleip -x
message: Parsing parameters…
parameter: clients = localhost (default)
error: must specify at least one of the following parameters -run, -update, -te
rminate, -showclients or -setclients
I can see that I am including both -run and -terminate… why am I getting this error? Any ideas?
Anonymous
My application is a cell phone sending data to a server. I’m trying to configure wcat to stress-test the server. My specific question is what I would put in the clientsfile – transaction – url parameter? There is no html page that data is posted to but rather an executable residing on the server that receives the data and writes it to a database. Can I use WCAT to stress-test the server? Thanks for any insight!
Anonymous
Chandra if you have copied the string “wcat.wsf -terminate …” try to type it, it worked for me.
/Daniel
Anonymous
Hi Mike/Martin,
Can you contact me at [email protected]?
I have some queries releated to WCAT.
Main query:
How can we handle asp.net form authentication using WCAT tool?
Regards,
Sundar
Anonymous
Hi Mike Volodarsky, I have a problem with how I can configure request element in scenario file to add input data to the end of ‘URL=page.aspx?’ to simulate input from page , for I did not use QueryString in my page.
for example:
In my Login Page, I have 2 textboxes(username textbox and password textbox) and 1 login button. Login is responsed by postback from login button pushed by user. So if both the username and password are corrected, the login can pass and go ahead to the other page. Or It can not and just stay at the login page. I get username and password not by querystring, just by like username = textbox1.text and password = textbox2.text.
So, my question is How can I simulate this postback in the configration of the request element in scenario file.
My name is Eskimo Zhao, in Tokyo, Japan. I’m looking forward to your answer, thank you for consideration.
You can also contact me by email:[email protected]
Anonymous
Is it possible to emulate ASP.NET server side postback's with WCAT 6.3? Is there any documentation that specifically talks about this? It would seem that if this is the MS .NET and IIS team's testing tool, there must be a way to emulate runat=server, etc. Thanks!
Anonymous
Hi Mike Volodarsky!
I have some problem like these:
– problem when counter, counter on server (not localhost) always error and in file log have this line “An error occured collecting server information data. Check that WMI is available”
– when i setup client by command:
cscript wcat.wsf -update -clients “vn-21,vn-20”
it not work although my account belong to admin group, so i setup file wcat to pc client too and run as normal, oh well it work. So i can not know it work properly
– when i run test first time, info in file log.xml almost full, but in second time, info lost and number of request decrease so much.
-sorry about my bad english –
Thanks
Mike Volodarsky
vandong,
Be sure you can access the performance counters on the remote machine using perfmon.exe – my bet is that you have an authentication or firewall issue when connecting to the performance counters remotely.
Also make sure that your Remote Registry service is running on the server to collect performance counters.
Thanks,
Mike
Anonymous
thanx for the documentation download link………This was just the thing I was looking for, keep posting. Will be visiting back soon.
Anonymous
I want documentation for wcat with detailed tutorial contains how to work.And sample code.
Anonymous
Hi Mike (and all others)
I have the same problem as Vandong (Log.xml says “An error occured collecting server information data.” on all performance counters).
The remote registry service is running on my server, so I guess it has something with the authentication, but I cant find anything in the manual and Ive google the heck out of this problem without results. I can’t add P-counters from my server using the Perfmon, but I can monitor counters using MyComputer > Manage->R-click on C Mgnt->”Connect to another computer”, so something must work..
Could you Mike or anyone, elaborate a bit on that authentication thing. Im running from an admin account on my client, but that account is not visible from my server. Im not very good at these network/account-issues…
Thanks in advance
Anonymous
Oups… sorry for polluting your blog, but I just needed to add: Windows (and Norton) firewalls were both shut down on both ends.
Anonymous
I am trying this tool for teh first time today, and getting “An unhandled win32 exception occured in wcctl.exe[4748].
wcat.wsf -terminate -run -t home.ubr -f settings.ubr
C:Program Fileswcat>wcat.wsf -termina
a_settings.ubr
Microsoft (R) Windows Script Host Versi
Copyright (C) Microsoft Corporation. Al
wcat.wsf – WCAT Utility Script
Copyright (c) 1995-2007 Microsoft Corpo
message: Parsing parameters…
parameter: terminate
parameter: run
parameter: clients = localhost (defaul
parameter: {wcctl.exe command line} =
ngs.ubr -clients 1
message: Terminating all instances of
message: Terminating all local instanc
message: Launching wcclient.exe on all
message: starting wcclient.exe on loca
min$wcatwcclient.exe WS10283 -b…
Any help will be appreciated.
thanks.
Anonymous
Why setup of 6.3 says in documentation (wcat.doc) about v 6.1?
Anonymous
Hi Mike,
Can we have GUI made for using this tool. Can this tool be made easy to use with simple User interface with record and playback feature.
I saw a project in sourceforge WCAT.NET which tried to create a GUI for WCAT but the project is empty.
Just a suggestion
Anonymous
when i run the command “C:Program Fileswcat>wcat.wsf -terminate -run -clients localhost -t client.ubr -f settings.ubr -x ” it creates a log file . but in client it shows unable to create log file after that it runs.. at the end of test in controller it shows
Logging results…
failed: 800706ba
Test finished.
message: wcat.wsf completed successfully…
In Log file, program counters having errors and i am having 0 value for all … can anyone help me ?
Anonymous
Hi,
When running:
wcctl -c config.txt -d distribution.txt -s script -a localhost
I get the following error:
Invalid number of clients specified.
Can you let me know what I need to correct?
Thank you.
Anonymous
Hi Mike, I am trying to use the tool for the first time. In a very simple test, I get an error on line 1101 char 22 in script scar.wsf. The error is the handle is invalid. The error code is 80070006 and the source is null. Any help would be appreciated.
Thanks.
Anonymous
Hi Mike, I need to do a large post of Binary Data.
The documentaion suggests an extension dll.
My user function would need to return a byte array, but the WCAT user function only allows PCHAR*.
Do you know how I can do this in WCAT?
Anonymous
Hi,
I was following your steps, but end with Invalid number of clients specified.
Basically my local machine will be acted as client as well as web server (I got IIS 7.0 since i am using 64 bits windows 7 enterprise), and my databsase is on another machine.
But when I try to run this command: wcctl -c config.txt -d distribution.txt -s script.txt -a localhost, it throws this error: invalid number of clients specified. Is there anything wrong with the tutorial or i am missing sth in here.
this is my current environment configuratioin:
I am using 64 bit windows 7, hence the installation directory will be C:Program Files (x86)wcat rather than C:Program Fileswcat, i am not sure whether this makes difference.
Here are my questions:
1. where shall i save these 3 files, currently i am saving these configuration.txt, script.txt and distribution.txt files in the wcat installation directory, (C:Program Files (x86)wcat)
2. Can the controller and clients on the same machine? coz at this time being, both my controller (web server I assume) and client are on the same machine (64 bits windows 7 and iis7)
Anonymous
Hi,
I have installed WCAT 6.3 to stress test IIS 6 on Windows Server 2003 r2. I am facing a weird issue where after sending some HTTP request WCAT stop sending anymore requests and shows 0 in all the fields. What can be the issue? Has anyone encountered this kind of issue?
Thanks,
Rajat
Daniel Varkonyi
Hello Mike!
I found this tool, for testing a service. When i run controller and client manually i got the following error:
C:Program Fileswcat>wcclient.exe
Controller: localhost
Wait for controller: false
IPv6: false
Bind Addresses: not specified
615: GetLastError was 0
File: sdktoolswcatcommoncontroller.c
Line: 424
Error during network operation: bytes wrong
Do you have any hint what can be wrong?
Thanks for any help!
George Serban
Hello Daniel,
I have the same behavior and error on a client:
Error during network operation: bytes wrong
It works like a charm on another clients.
I know it is an old post but maybe you have found any solution and could give some indications?
Any suggestion is welcome. Thank you!