I created this so that we could measure how often certian machines were unable to process all incoming requests. The problem usually manifests itself with TCP SYN Retries, and in that case, you can see it on a well performing network by seeing connection times taking 1, 3 or 7 seconds as each SYN packet is resent.
It was designed to be run inside a container so it can be easily sent between some old infrastructure and new infrastructure to easily measure the difference between them.
Be sure to override the Environment variables that are set in the program to get it to perform per your environment. I found that with another Go HTTP server that these settings would easily overwhelm the networking subsystem on a single machine.
Since this is built on the 'scratch' docker image, you must compile the Golang program with some special flags so that it it doesn't need to inspect the machine to setup some runtime settings. The command below will get everything working.
If you use standard go build
and build an image you'll find some difficult to understand errors about file not found
.
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo