Add urlgen.
parent
8ae192d04c
commit
03134ec83e
|
@ -0,0 +1 @@
|
|||
urls.txt
|
|
@ -0,0 +1,33 @@
|
|||
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.
|
||||
|
||||
|
||||
## 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, choose a URL file to run. The URL files are named based on their series
|
||||
cardinality. For example, `series.10.txt` has 10 unique series.
|
||||
|
||||
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 10 unique series using 100 concurrent connections:
|
||||
|
||||
```sh
|
||||
$ siege -c 100 -f series.10.txt
|
||||
```
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# Calculate start time as unix timestamp.
|
||||
TIME=`date -j -f "%b %d %T %Z %Y" "Jan 01 00:00:00 EDT 2000" "+%s"`
|
||||
|
||||
# Set defaults.
|
||||
INTERVAL=10
|
||||
NUMSERIES=1
|
||||
NUMPOINTS=100
|
||||
|
||||
# Parse arguments
|
||||
while getopts "s:p:i:h" opt; do
|
||||
case $opt in
|
||||
i)
|
||||
INTERVAL=$OPTARG
|
||||
;;
|
||||
s)
|
||||
NUMSERIES=$OPTARG
|
||||
;;
|
||||
p)
|
||||
NUMPOINTS=$OPTARG
|
||||
;;
|
||||
h)
|
||||
echo "urlgen is a utility for generating URL files for siege."
|
||||
echo ""
|
||||
echo "Usage:"
|
||||
echo " urlgen.sh [OPTIONS]"
|
||||
echo ""
|
||||
echo "The following arguments can be specified:"
|
||||
echo ""
|
||||
echo " -i seconds"
|
||||
echo " Interval between generated points per series."
|
||||
echo ""
|
||||
echo " -s num"
|
||||
echo " Number of unique series to generate."
|
||||
echo ""
|
||||
echo " -p num"
|
||||
echo " Number of points per series to generate."
|
||||
echo ""
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Generate a new value every interval per series.
|
||||
for i in `seq 1 $NUMPOINTS`;
|
||||
do
|
||||
# Move forward the current time.
|
||||
let TIME=TIME+INTERVAL
|
||||
TIMESTAMP=`date -j -f "%s" $TIME +"%Y-%m-%dT%H:%M:%SZ"`
|
||||
|
||||
# Generate a URL for each series.
|
||||
for series in `seq 1 $NUMSERIES`;
|
||||
do
|
||||
echo 'http://localhost:8086/write POST {"database" : "db", "retentionPolicy" : "raw", "points": [{"name": "cpu", "tags": {"host": "server'$series'"}, "timestamp": "'$TIMESTAMP'","values": {"value": 100}}]}'
|
||||
done
|
||||
done
|
||||
|
||||
|
Loading…
Reference in New Issue