gatling has primitive CGI support which is implemented as a proxy.
The idea is that you specify a regex and an ip and a port. If the regex
matches the requested URL, gatling will not answer the query itself but
make a TCP connection to the ip and the port. So, in effect, gatling
can be used to quickly serve static data but let someone else (an Apache
maybe) serve the Java servlets.
In my tests I used fnord as backend to run a CGI program. This ought to
combine the best of all worlds.
For testing, run gatling like this:
./gatling -O 127.0.0.1/8023/cgi$
And then run fnord in the same directory like this:
tcpserver -v -u `id -u nobody` -RHl localhost 0 8023 fnord-cgi
Another idea I have is to not relay the requests synchronously but
through a request pool. If there are more requests than slots in the
pool, gatling could prioritize the requests through an external program.
My current idea is that gatling would run an external program (think:
perl) that would get peer IP address and HTTP request on stdin and write
a priority on stdout.
You can have more than one -O statement. The first matching will always
be used. So you can have one backend for .jsp and a different one for
This CGI proxy mode will only be used if the file ".proxy" exists in the
root of the virtual server.