This is a sample/tool I wrote in order to check the behavior of Exchange when a heavy load is put against it. You need to exercise caution and take responsibility for the code and the apps behavior if you decide to use it since it can throw so much of a load against a CAS that it can bring the server to its knees. You should really not use this app against your production server unless you fully understand what the code does and take responsibility for its usage. The app is a command line driven and works off of a CSV file which you need to modify. I’ve only created a few specific tests which produce some of the heavier loads I’ve seen on an Exchange server. This app is very useful for seeing the behavior of throttling and seeing what might happen with your servers during a fail-over. Be sure to fully read the text files describing the usage of the application and carefully craft your config file.
I’m planning on adding additional processing to this app in the future. However, my time is pretty tied-up at the moment. I do have future check-ins which I need to test-out for which will provide the ability to test using impersonation and also will include some additional tests. If you have some suggestions as far as heavy traffic tests or changes then please suggest them.
Here is the general description of how this application works:
This is a sample application which demonstrates you might place a heavy load of EWS calls against an Exchange server in order to test performance. It is intended to be used in a lab and for educational purposes only. Used incorrectly it can generate enough traffic to effectively take down an Exchange server by generating DOS-Attack levels of calls. It is not intended to be used in a production environment. By using the code or binary of this application, you take responsibility for its usage and what it may do.
This is a console application which works off of a CSV format configuration file being passed to it as a command line parameter. The config file is central in establishing what type and amount of load generated. The config file controls what tests are done and how many instances of that test are performed at the same time. You can have multiple instances of the same test running at the same time by adjusting the NumberOfSimultaneousCalls setting, which controls the number of threads the test will be performed on. When a test on a thread completes, the thread will pause for the amount of time specified by the MillisecondsBeforeNextCall setting and then the test will repeat on the same thread.
Output is directed to the screen in a columnar fashion by default. The application can also write its output as a CSV file. The generated CSV file can be loaded into Excel for review. The first line in the config file is a header file and is required. All blank character spaces will be stripped from the log file when its read. Be sure to not include commas in the data used in the file since commas are field delimiters. Blank lines will be skipped.
Both Autodiscover and direct URL reference are supported. Impersonation is currently not supported in this version.