Asynchronous Web Traffic Generator

wcasync is an asynchronous open-loop web-traffic generator.

Many existing web-traffic generators (httperf, webstone2.5) are too simple; they create a fixed number of client processes and re-fetch urls only after the earlier url finishes successfully. Such generators rarely stress web-servers, even when spewing out data at tens of MBps, the web-server only has to contend with a small number of simultaneous clients. We call such behavior "closed-loop".

In constrast, wcasync, built on top of WebStone 2.5, is open-loop. wcasync uses an asynchronous networking library~(libasync) to issue requests at a specified rate irrespective of responses to prior requests.

Simply speaking, wcasync takes two parameters
– a request rate in reqs/sec and,
– a probabilistic list of urls to fetch
and requests at the specified rate. In each request, wcasync samples urls from the url list and fetches data. Prior requests that have been pending for too long are timed out and garbage collected.

wcAsync also mimics the session-like arrival of HTTP requests. User's arrive in sessions, make a request, wait some random time after which they can either make new requests or leave with a small probability.