Title: gobench :: ApacheBench (ab) on steroids

Type: Open Source in Israel

Tags: tools testing performance


Status: accepted

There are many tools to massively stress-test your HTTP/HTTPS service without using hundreds of Amazon EC2 machines (JMeter is not one of them):

ab, siege, weighttp, httperf, wrk

All those tools are written with scalability in mind to support "unlimited" connections with just a few OS native threads. To support that scalabilty, those tools are written in an event model with callback hell in C/C++. Unfortunately, if you need to customize the tools with some specific modification for your service, or just hook the flow for more trace-ability, you are totally screwed because of C/C++ spaghetti code. Also, you need to spent a few hours at stackoverflow.com to successfully compile those changes using complex build tools.

In this session I will talk about an open source tool that I wrote: gobench (https://github.com/cmpxchg16/gobench). This tool gives you the same performance as those hardcore tools thanks to Go (golang), and the ability to modify the code and compile it while still staying sane. This is available thanks to Go and the concurrency simplification it offers, and to a single command to compile a single big statically binary with no dependencies, that will work on any Linux distro! YEAH!