Bandwidth can be critical to the performance of a website. Since this is a rather obvious fact, it is common for our customers to watch for bandwidth as the limiting factor early in a testing effort. This is especially true when the load test results do not point immediately any other limitation, such as 100% CPU on the application server.
When faced with a poorly performing system but no obvious signs of limitations, it is natural to focus all energies on finding the cause of the problem. This might mean spending hours poring through firewall and router configurations, looking for anything that might be limiting through-put. Frequently it is more productive to use the process of elimination – work on proving that other factors are not the cause. Bandwidth is one that is particularly easy to eliminate since all that is required is a test result showing bandwidth consumption exceeding the result in a failing test. You do not need to determine the maximum bandwidth the site can supply…exceeding previous limitations is enough to prove that bandwidth was not the limiting factor.
Choosing a URL to test
So the question becomes: How do I configure a load test specifically designed to test bandwidth?
Here are some of the rules that we follow when running a bandwidth test:
Creating a test configuration
If you have made it this far, you should have some URLs ready to test that meet the above criteria. The next step is to create a testcase in Load Tester utilizing one of those URLs. To run the test:
Interpreting the results
While the test is running, watch the Bandwidth Out chart to determine the total outgoing bandwidth achieved by Load Tester. (note that this counts bytes at the HTTP layer, so TCP/IP overhead is not included. In most cases this is negligible – under 1%).
If the bandwidth reported exceeds the bandwidth achieved during the failed load test then congratulations are in order – you have proved that bandwidth between the load engine and the web server is NOT the bottleneck!
If the bandwidth reported in this test is similar to the limit seen in previous load tests, then the next step is to eliminate the possibility that the load engine itself has a bandwidth limitation. This is easy – run another test, but double the number of load engines used during the test. For instance, if the first test used only the local (built-in) load engine, install a second and use it, in addition to the local engine. If the results are the same, the engine is not the limiting factor. Something between the load engine and the web server is the bottleneck. The next step is to get your network administrator involved to help locate the point of congestion.
Summary
When faced with a system that has reached its capacity but the cause is not obvious, it can be difficult to decide what direction to investigate first. Running a simple bandwidth test can quickly eliminate bandwidth as a contender – allowing your team to investigate the remaining possibilities.
Chris Merrill, Chief Engineer at Web Performance
When his dad brought home a Commodore PET computer, Chris was drawn into computers. 7 years later, after finishing his degree in Computer and Electrical Engineering at Purdue University, he found himself writing software for industrial control systems. His first foray into testing software resulted in an innovative control system for testing lubricants in automotive engines. The Internet grabbed his attention and he became one of the first Sun Certified Java Developers. His focus then locked on performance testing of websites. As Chief Engineer for Web Performance since 2001, Chris now spends his time turning real-world testing challenges into new features for the Load Tester product.
Occasional load-testing tips, performance-engineering notes, and product updates. No spam — unsubscribe anytime.