influxdb/tests/siege
ben hockey 9a3c28748c change timestamp to time 2015-05-11 12:28:47 -05:00
..
.gitignore Add urlgen. 2015-01-29 00:47:19 -05:00
README.md Update urlgen to end at current time. 2015-03-12 15:04:36 -06:00
urlgen change timestamp to time 2015-05-11 12:28:47 -05:00

README.md

Siege

Siege is an HTTP benchmarking tool and can be used against InfluxDB easily. If you're on Mac you can install siege using brew. If you're on Linux you can install using your package manager.

Initializing the database

Before you run your siege, you need to do 2 things:

  • Create a database named db.
  • Create a retention policy named raw.

You can do this with the following commands:

$ curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE db"
$ curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY raw ON db DURATION 30d REPLICATION 3 DEFAULT"

Running

To run siege, first start one or more InfluxDB nodes. At least one of those nodes should run on the default port of 8086.

Next, generate a URL file to run. You can use the urlgen utility in this folder to make the file. Simply set the number of unique clients and number of series to generate:

$ ./urlgen -c 10 -s 100 > urls.txt

Now you can execute siege. There are several arguments available but only a few that we're concerned with:

-c NUM   the number of concurrent connections.
-d NUM   delay between each request, in seconds.
-b       benchmark mode. runs with a delay of 0.
-t DUR   duration of the benchmark. value should end in 's', 'm', or 'h'.
-f FILE  the path to the URL file.

These can be combined to simulate different load. For example, this command will execute writes against using 100 concurrent connections with a 1 second delay in between each call:

$ siege -c 100 -f urls.txt

Again, you can also specify the -b option to remove the delay.

Verification

You can verify that your data made it in by executing a query against it:

$ curl -G http://localhost:8086/query --data-urlencode "db=db" --data-urlencode "q=SELECT sum(value) FROM cpu GROUP BY time(1h)"