A. Shawn Bandy dbb6803673 In cases where there is no distinction in 'flavor' within a language use 'None' as the value for flavor. 9 years ago
..
scripts bed6e53bd6 Implement Vert.x Web 9 years ago
src 55f40358a3 Upgrade to Vert.x 3.3.0 and fix MongoDB authentication issue 9 years ago
.gitignore bed6e53bd6 Implement Vert.x Web 9 years ago
Readme.md a9cc6d974e migrate old postgres code to new async driver and added mysql to the list of implementations 9 years ago
benchmark_config.json dbb6803673 In cases where there is no distinction in 'flavor' within a language use 'None' as the value for flavor. 9 years ago
pom.xml dbc0fd4209 Bump version 9 years ago
setup.sh a9cc6d974e migrate old postgres code to new async driver and added mysql to the list of implementations 9 years ago
source_code bed6e53bd6 Implement Vert.x Web 9 years ago

Readme.md

Vert.x Web Benchmarking Test

This is the Vert.x Web portion of a benchmarking test suite comparing a variety of web development platforms.

Test URLs

Plain Text Test

http://localhost:8080/plaintext

JSON Encoding Test

http://localhost:8080/json

Data-Store/Database Mapping Test

http://localhost:8080/mongo/db http://localhost:8080/mongo/queries?queries=5

http://localhost:8080/jdbc/db http://localhost:8080/jdbc/queries?queries=5

Data-Store/Database Update Test

http://localhost:8080/mongo/update?queries=5

http://localhost:8080/jdbc/update?queries=5

Template rendering Test

http://localhost:8080/mongo/fortunes

http://localhost:8080/jdbc/fortunes

Generating Load

It's best to generate load from a completely separate machine from the server if you can, to avoid resource contention during the test.

We use the wrk load generation tool to generate the load for our benchmark runs. It's the best tool we've found for the job and supports HTTP pipelining (used by the plaintext scenario) via its scripting interface. Wrk will only run from a Linux machine however, so if you must use Windows, try using ab (Apache Bench).

You'll need to clone the wrk repo on your load generation machine and follow their instructions to build it.

Here's a sample wrk command to generate load for the JSON scenario. This run is using 256 connections across 32 client threads for a duration of 10 seconds.

wrk -c 256 -t 32 -d 10 http://127.0.0.1:8080/json

To generate pipelined load for the plaintext scenario, use the following command, assuming your CWD is the root of this repo and wrk is on your path. The final argument after the -- is the desired pipeline depth. We always run the plaintext scenario at a pipeline depth of 16, just like the Techempower Benchmarks.

wrk -c 256 -t 32 -d 15 -s ./scripts/pipeline.lua http://localhost:8080/psql/update?queries=20 -- 16

Note you may want to tweak the number of client threads (the -t arg) being used based on the specs of your load generation machine.