Performance testing tools
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Vegeta
Standalone install
LATEST=$(curl --silent "https://api.github.com/repos/tsenart/vegeta/releases/latest" | jq -r .tag_name | tr -d "v"); echo $LATEST TEMPDIR=$(mktemp -d) curl -L https://github.com/tsenart/vegeta/releases/download/v${LATEST}/vegeta_${LATEST}_linux_amd64.tar.gz -o $TEMPDIR/vegeta_${LATEST}_linux_amd64.tar.gz sudo tar xzvf $TEMPDIR/vegeta_${LATEST}_linux_amd64.tar.gz -C /usr/local/bin vegeta vegeta -version Version: Commit: Runtime: go1.14.2 linux/amd64 Date:
Docker and Kubernetes
Docker images
Kubernetes deployment
kubectl apply -f <(cat <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: vegeta labels: app: vegeta spec: replicas: 1 selector: matchLabels: app: vegeta template: metadata: labels: app: vegeta spec: containers: - name: vegeta image: peterevans/vegeta:6.9.1-vegeta12.8.4 args: - sh - -c - sleep 36000 # 3600 ports: - containerPort: 80 resources: limits: cpu: 4000m # '1' memory: 1Gi requests: cpu: 2000m # '1' memory: 1Gi nodeSelector: node.kubernetes.io/lifecycle: spot EOF ) --dry-run=server
Operations
URL=http://example.com/healthcheck NAME=example.com RATE=50/1s DURATION=600s DIR=/results FILE=$DIR/$DATE-$NAME-r${RATE/\//in}-d$DURATION DATE=$(date +"%Y%m%d-%H%M"); echo $DATE echo "GET $URL" | vegeta attack -name $NAME -rate=$RATE -duration=$DURATION -timeout=120s | tee $FILE-results.bin | vegeta report cat $FILE-results.bin | vegeta plot -title $URL > $FILE-plot.html cat $FILE-results.bin | vegeta report # print report again # Multi target vegeta attack -name $NAME -rate=$RATE -duration=$DURATION -timeout=120s -targets=<(cat <<EOF GET http://example1.com/healthcheck GET http://example2.com/healthcheck EOF ) | tee $FILE-results.bin | vegeta report # | -cpus int Number of CPUs to use (default 8) # | attack # | -duration duration Duration of the test [0 = forever] # | -name string Attack name # | -output string Output file (default "stdout") # | -rate value Number of requests per time unit [0 = infinity] (default 50/1s) # | -targets string Targets file (default "stdin") # | -workers uint Initial number of workers (default 10) # | plot # | -output string Output file (default "stdout") # | -title string Title and header of the resulting HTML page (default "Vegeta Plot") # | report # | -output string Output file (default "stdout") # | -type string Report type to generate [text, json, hist[buckets], hdrplot] (default "text") # On a laptop kubectl cp vegeta/vegeta-5847d879d8-p9kqw:plot.html ./plot.html -c vegeta
Repositories
- chef-inspec infrastructure compliance tool