WCAT 6.3 web performance and scalability test tool released

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 http://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

Published 17 May 07 03:40 by Mike Volodarsky
Filed under: , ,

Attachment(s): wcat.doc

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Mike Volodarsky's WebLog said on May 17, 2007 4:08 PM:

The NT Performance team just publically released the latest version of WCAT (Web Capacity Analysis Tool),

# iis said on May 17, 2007 4:22 PM:

The NT Performance team just publically released the latest version of WCAT (Web Capacity Analysis Tool

# Chad said on May 17, 2007 11:55 PM:
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.
# Maor David's Blog said on May 18, 2007 7:13 AM:

The latest version of WCAT (Web Capacity Analysis Tool - the web performance test tool that the IIS team

# Steve Schofield said on May 19, 2007 8:25 PM:
Is there a reason why WAST was been not updated vs. a command line tool?
# Mike Volodarsky said on May 19, 2007 10:07 PM:

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

# Hiroshi Okunushi's Blog ☆ミ said on May 28, 2007 8:29 PM:
セミナーでWebサーバーに負荷をかけるツールとしてWCATを紹介していますが、そのフォローを少ししておかないといけませんね。 IIS Resource Kit に入っているWCATはV5.2というもので、最近もっと新しいものがリリースされています。
# Falco said on May 30, 2007 7:51 AM:
WAST is still great to do some fast testings... But I miss the ability to script for e.g. forms logon.
# Sanjay said on May 31, 2007 7:24 PM:
Any comparison benchmarks with Visual studio Load testing tool?
# Mike Volodarsky said on June 1, 2007 8:35 PM:

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

# DJ Decay said on July 12, 2007 9:39 AM:
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
# Andres Anton said on August 10, 2007 8:56 PM:
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: \HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\MaxUserPort 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>
# Andres Anton said on August 14, 2007 6:40 AM:
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:\nt\vbl _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
# Daryl Sirota said on November 1, 2007 2:35 PM:
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!
# Chris said on November 2, 2007 12:44 PM:
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 = "////" + clientsIdea + 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.
# mustufa said on December 5, 2007 11:01 AM:
I have the same problem like Daryl's. wcclient.exe dies with "NULL controller specified." Have anyone managed to succeed?
# Raymond Bennett (MSFT) said on December 8, 2007 11:11 PM:
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.
# e1ny said on January 18, 2008 11:59 AM:
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.
# Media said on January 23, 2008 12:14 PM:
# Neil Hutson - Windows Server 2008, Visual Studio 2008 and .NET 3.5 for developers said on January 23, 2008 5:28 PM:

MSCOM OPS with Microsoft.com, WS08, IIS7, and the Lone Server Last week I had a post about the "Lone

# Noticias externas said on January 23, 2008 5:57 PM:

MSCOM OPS with Microsoft.com, WS08, IIS7, and the Lone Server Last week I had a post about the "Lone

# IIS 7.0 Server-Side said on January 24, 2008 8:37 PM:

The original release of WCAT 6.3 contained a bugs that was causing many users to not be able to use the

# Mike Volodarsky said on January 24, 2008 8:41 PM:

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

# Martyn said on March 9, 2008 7:55 PM:
Mike, did you publish any "walkthrough information and sample scripts" yet? Thanks, Martyn
# Mike Volodarsky said on March 11, 2008 11:20 PM:

Hi Martyn,

Unfortunately I havent gotten a chance to do this yet. ...  Did you have a specific question I can answer?

Thanks,

Mike

# Martyn said on March 17, 2008 3:09 AM:
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 said on March 17, 2008 11:33 AM:

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

# Martyn said on April 17, 2008 8:18 AM:
Is there a support newsgroup for WCAT?
# Mike Volodarsky said on April 19, 2008 1:01 PM:

Hi Martyn,

That's a good idea - we are creating one on IIS.NET!

Thanks,

Mike

# IIS 7.0 Server-Side said on May 1, 2008 2:44 AM:

The IIS 7.0 Resource Kit Book is finally out! Ok, it’s been out for almost 2 months, but somehow

# Vu Thanh Hai said on September 8, 2008 7:56 AM:
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!
# Jim said on September 17, 2008 11:45 PM:
Is there any way to use a client certificate for HTTPS requests?
# Geoff said on November 14, 2008 4:11 PM:
I'm running wcat and all responses are 400 errors. Any idea on what would cause this? Please help.
# Martin said on November 28, 2008 2:50 AM:
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.
# wan accelerators said on December 2, 2008 4:19 AM:

I\'ve found that in our network WAN accelerators have made a big difference

# Martin said on December 4, 2008 1:42 AM:
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_NAME\Users. OK. Now you can test this url: http://localhost/alias/Default.aspx. //alias is a name for your app, that you typed in IIS.
# Martin said on December 4, 2008 5:37 AM:
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.
# Rob said on December 5, 2008 8:03 PM:
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 Files\wcat>wcat.wsf -terminate -run -setclients -clients localhost -t samples\scripts\h 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 samples\scripts\home.ubr -v 3 -s http://www.yahoo.com -o yahootest.xml -singleip -x -clients 1 message: updating Clients registry key... message: setting \\localhost\HKLM\Software\WCAT\Clients = 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 \\localhost\admin$\wcat\wcclient.e xe RAVIKOLLI -b... message: executing '"C:\Program Files\wcat\wcctl.exe" -t samples\scripts\home.ubr -v 3 -s http://ww w.yahoo.com -o yahootest.xml -singleip -x -clients 1'... Initializing performance counters... '\\http://www.yahoo.com\Processor(_Total)\% Processor Time'... Success! '\\http://www.yahoo.com\Processor(_Total)\% User Time'... Success! '\\http://www.yahoo.com\Processor(_Total)\% Privileged Time'... Success! '\\http://www.yahoo.com\System\Context 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
# Martin said on December 10, 2008 6:17 AM:
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.
# Chandra said on January 16, 2009 12:36 PM:
I am trying to run the wcat, and I am getting parameter missing error... C:\PROGRA~1\wcat>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?
# Daniela said on January 22, 2009 12:42 PM:
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!
# Daniel said on February 19, 2009 9:53 AM:
Chandra if you have copied the string "wcat.wsf -terminate ..." try to type it, it worked for me. /Daniel
# Sundar said on April 9, 2009 4:49 AM:
Hi Mike/Martin, Can you contact me at sundardev@gmail.com? I have some queries releated to WCAT. Main query: How can we handle asp.net form authentication using WCAT tool? Regards, Sundar
# EskimoZhao said on April 16, 2009 9:37 PM:
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:eskimozhao@hotmail.com
# Kevin Goddard said on May 12, 2009 2:44 PM:
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!
# vandong said on October 1, 2009 11:52 PM:
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 said on October 2, 2009 10:59 PM:

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

# r4 revolution said on October 13, 2009 5:33 AM:
thanx for the documentation download link.........This was just the thing I was looking for, keep posting. Will be visiting back soon.
# sendhil said on October 26, 2009 8:42 AM:
I want documentation for wcat with detailed tutorial contains how to work.And sample code.
# Mick Jagger said on November 4, 2009 2:48 PM:
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
# Mick Jagger said on November 4, 2009 2:59 PM:
Oups... sorry for polluting your blog, but I just needed to add: Windows (and Norton) firewalls were both shut down on both ends.

Leave a Comment

(required) 
(optional)
(required) 
Enter the code you see below


About Mike Volodarsky

For the past 5 years, I was the core Program Manager for Microsoft ASP.NET 2.0 and IIS 7.0 products. I drove the design and development of the IIS 7.0 web server core, the IIS FastCGI support, the AppCmd command line tool, the ASP.NET Integrated pipeline, and other special projects around server security, performance, and scalability. Now, I am working on my own on cutting edge web server tech on top of the Microsoft IIS platform, and continue blogging about it here.

About me



For the past 5 years, I was the core server Program Manager for the IIS 7.0 and ASP.NET 2.0 products at Microsoft.
Now, I work on advanced web server tech using IIS 7.0, .NET, and Windows Server 2008 and write about it in this blog.

View Michael Volodarsky's profile on LinkedIn

Writings



TechNet Magazine
>Top 10 Performance Improvements in IIS 7.0

MSDN Magazine
>IIS 7.0: Build Web Server Solutions with End-To-End Extensibility
>IIS 7.0: Enhance Your Apps with the Integrated ASP.NET Pipeline
>IIS 7.0: Explore The Web Server For Windows Vista And Beyond
>Design and Deploy Secure Web Apps with ASP.NET 2.0 and IIS 6.0
>Fast, Scalable, and Secure Session State Management for Your Web Applications


Tools and Modules

LeechGuard
IconHandler 2.0
DirectoryListing
HttpRedirection
IIS Auth for Wordpress
iisschema.exe
PortCheck.exe v2.0

Popular Posts

- ASP.NET 2.0 Breaking Changes on IIS 7.0
- Develop IIS7 modules and handlers with .NET
- Troubleshoot IIS7 errors like a pro
- Troubleshooting 503 / "service unavailable" errors
- Troubleshooting "server not found" errors
- Create IIS7 sites, applications, and virtual directories
- Run Ruby on Rails with IIS FastCGI
- VS Debugging of ASP.NET applications on Windows Vista
- Stop hot-linking with IIS and ASP.NET

Tags

Search

Go

This Blog

Archives

Good IIS Blogs

Disclaimer

These postings are provided as is with no warranties, and confer no rights. The views expressed in this blog are entirely my own.

Syndication