Application for HTTP benchmarking via different rules and configs

Go Benchmark App

Build Status License codecov Coverage Status Go Report Card GoDoc

The efficiency and speed of application - our goal and the basic idea.

Go Benchmark App

Application for HTTP-benchmarking via different rules and configurations.

Configurations provided via TOML-config.

Our main aims - compare different web-applications that we want to compare with same benchmarks tools, same parameters, repeated and distributed in time. Get average results and compare it with other applications.

This will allow us to analyze and compare the performance bottlenecks, and to take appropriate measures. The efficiency and speed of application - our goal and the basic idea.

Benchmarks tools

ab, wrk, siege

It should be installed.

How to configure

All config at config/main.toml

# Title for describing benchmarks
title = "CMS benchmarks"
# Benchmarks version
version = "0.1"
# Delay via try in seconds
delay = 20
# How much we should try
try = 10

# ab benchmarks parametres
[ab]
concurency = 5000
keepalive = false
requests = 10000

# wrk benchmarks parametres
[wrk]
connections = 5000
duration = 10
threads = 1000

# siege benchmarks parametres
[siege]
concurrent = 100
time = 30

# Applications parametres - list
[[app]]
title = "Application Banchamrs Title"
path = "fool/path/to/app"
url = "http://localhost:5000/test"

How to use

  • Installed Go 1.6+

  • Check is benchmarks tools installed:

    $ whereis ab

    $ whereis wrk

    $ whereis siege

  • Configure config/main.toml in current dirrectory as mentioned before.

  • Install application: $ go install github.com/mrlsd/go-benchmark-app

  • Command-line help: $ go-benchmark-app -h

Go Benchmark Applications v1.0.0
Options:
  -c FILE
    	load configuration from FILE (default "config/main.toml")
  -v	verbose output
  • To change config file - run: $ go-benchmark-app -c path/to/cfg.toml
  • Verbose output: $ go-benchmark-app -v

Tips & Tricks

  • When your benchmarks test failed with socket error (more resources unawailable), try increase delay options at config file (for example 60 sec) or/and change system limits to opened files, TCP/IP configuration and other system limitations.
  • For flexibility running test applications you can create recipe for that. For example set at config file:
[[app]]
title = "My App"
path = "apps/myapp.sh"
url = "http://localhost:5000/test"

and apps/myapp.sh file:

#!/bin/sh
prepare -to -run
/full/path/to/app -v param -d param -etc

in that way you can run docker, nginx or another useful commands.

For one application we use one URL, because it's simplify results analyze, interpretation, comparison.

License: MIT License

Owner
Evgeny Ukhanov
Let's change the world... My favorite languages: Rust, F#, Go, Haskell
Evgeny Ukhanov
Similar Resources

Simple vanilla Go CRUD application with mongoDB database with its mflix dataset that I use for my thesis about benchmarking REST API and GraphQL.

Go GraphQL Simple vanilla Go CRUD application with mongoDB database with its mflix dataset that I use for my thesis about benchmarking REST API and Gr

Oct 15, 2021

HTTP Load Testing And Benchmarking Tool

GBench HTTP Load Testing And Benchmarking Tool inspired by Apache Benchmark and Siege. Requirements You need Golang installed and ready on your system

Jan 2, 2020

HTTP/HTTPS load testing and benchmarking tool

Introduction I wrote that code because: (the obvious reason::I love to write code in Go) We are working so hard to optimize our servers - why shouldn'

Dec 5, 2022

Plow is a high-performance HTTP benchmarking tool with real-time web UI and terminal displaying

Plow is a high-performance HTTP benchmarking tool with real-time web UI and terminal displaying

Plow is a HTTP(S) benchmarking tool, written in Golang. It uses excellent fasthttp instead of Go's default net/http due to its lightning fast performance.

Jan 9, 2023

Fast cross-platform HTTP benchmarking tool written in Go

bombardier bombardier is a HTTP(S) benchmarking tool. It is written in Go programming language and uses excellent fasthttp instead of Go's default htt

Jan 2, 2023

Fast cross-platform HTTP benchmarking tool written in Go

bombardier bombardier is a HTTP(S) benchmarking tool. It is written in Go programming language and uses excellent fasthttp instead of Go's default htt

Dec 31, 2022

go-wrk - a HTTP benchmarking tool based in spirit on the excellent wrk tool (https://github.com/wg/wrk)

go-wrk - an HTTP benchmarking tool go-wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CP

Jan 5, 2023

a benchmarking&stressing tool that can send raw HTTP requests

reqstress reqstress is a benchmarking&stressing tool that can send raw HTTP requests. It's written in Go and uses fasthttp library instead of Go's def

Dec 18, 2022

Performance-focused HTTP benchmarking tool written in Go

๐Ÿ’ฅ gocannon - HTTP benchmarking tool Gocannon is a lightweight HTTP benchmarking tool, intended to measure changes in backend application performance

Dec 22, 2022

A rest application to update firewalld rules on a linux server

Firewalld-rest A REST application to dynamically update firewalld rules on a linux server. Firewalld is a firewall management tool for Linux operating

Jan 2, 2023

Generate types and service clients from protobuf definitions annotated with http rules.

protoc-gen-typescript-http Generates Typescript types and service clients from protobuf definitions annotated with http rules. The generated types fol

Nov 22, 2022

Http-server - A HTTP server and can be accessed via TLS and non-TLS mode

Application server.go runs a HTTP/HTTPS server on the port 9090. It gives you 4

Feb 3, 2022

๐Ÿ‹๏ธ dbbench is a simple database benchmarking tool which supports several databases and own scripts

dbbench Table of Contents Description Example Installation Supported Databases Usage Custom Scripts Troubeshooting Development Acknowledgements Descri

Dec 30, 2022

Stress testing and benchmarking tool for the NEAR EVM

evm-bully --- stress testing and benchmarking tool for the NEAR EVM

May 30, 2022

Toy program for benchmarking safe and unsafe ways of saving a file

save-a-file benchmarks the many strategies an editor could use to save a file. Example output on a SSD: ext4: $ ./save-a-file ~/tmp/foo 29.195ยตs per s

Jan 4, 2023

Frisbee is a Kubernetes-native platform for exploring, testing, and benchmarking distributed applications.

Frisbee is a Kubernetes-native platform for exploring, testing, and benchmarking distributed applications.

Why Frisbee ? Frisbee is a next generation platform designed to unify chaos testing and perfomance benchmarking. We address the key pain points develo

Dec 14, 2022

Make TCP connection storm between server and client for benchmarking network stuff

Make TCP connection storm between server and client for benchmarking network stuff

Nov 14, 2021

Benchmarking deferent Fibonacci functions and algorithms with running unit test

GoFibonacciBench Benchmarking deferent Fibonacci functions and algorithms with running unit test ... Introduction: Fibonacci numbers are special kinds

Feb 27, 2022

๐Ÿบ Garment retains a single connection pool for different database types used inside you application

๐Ÿบ Garment retains a single connection pool for different database types used inside you application

Garment A Thread Safe Connection Pooling. Garment retains a single connection pool for different database types used inside you application (MySQL, Re

Nov 9, 2022
A benchmarking shootout of various db/SQL utilities for Go

golang-db-sql-benchmark A collection of benchmarks for popular Go database/SQL utilities Libraries under test database/sql + go-sql-driver/mysql gocra

Dec 19, 2022
Go HTTP request router and web framework benchmark

Go HTTP Router Benchmark This benchmark suite aims to compare the performance of HTTP request routers for Go by implementing the routing structure of

Dec 27, 2022
A rapid http(s) benchmark tool written in Go
A rapid http(s) benchmark tool written in Go

gonetx/httpit httpit is a rapid http(s) benchmark tool which on top of fasthttp. Also thanks to cobra and bubbletea. Installation Get binaries from re

Dec 23, 2022
Go http server benchmark
Go http server benchmark

go-http-server-benchmark The more connections, nbio cost the less memory, and performance the better than other frameworks. We can serve for 1000k or

Sep 1, 2022
Webserver I built to serve Infura endpoints. Deployable via k8s and AWS EKS. Load testable via k6 tooling, and montiorable via prometheus and grafana

Infura Web Server Welcome to my verion of the take home project. I've created a webserver written in go to serve Infura api data over 3 possible data

Nov 15, 2022
Manage your ssh alias configs easily.
Manage your ssh alias configs easily.

manssh manssh is a command line tool for managing your ssh alias config easily, inspired by storm project, powered by Go. Note: This project is actual

Nov 9, 2022
A command line tool for validating Kubernetes configs with rego

ccheck ccheck is a command line application for writing tests against configuration files and data using the rego query language. It's intended purpos

Nov 16, 2022
mirror to https://android.googlesource.com/kernel/configs

Android Kernel Configs How are kernel config settings typically stored? When building the Linux kernel for a particular platform one usually begins by

Dec 8, 2021
Plugs module to see different types of plug types needed in different countries, and a comparison tool between two countries plug socket types.

plugs Importing the module: go get github.com/matthewboyd/plugs "github.com/matthewboyd/plugs" How to use the module: There are two functions wi

Dec 28, 2021
CSPFinder is a tool to compare ROI of selling Cash Secure Put options between different tickers for different expiry dates.

CSPFinder is a tool to compare ROI of selling Cash Secure Put options between different tickers for different expiry dates. It is intended to help open new cash secured put positions.

Dec 21, 2021