Skip to content

Latest commit

 

History

History
84 lines (67 loc) · 6.09 KB

README.md

File metadata and controls

84 lines (67 loc) · 6.09 KB

Awesome Performance

A collection of videos, talks and tools about performance engineering and testing.

From Wikipedia, performance testing is in general a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.

Contributions are always welcome!

Contents

Load Testing Tools

JVM

  • gatling – highly configurable performance testing framework in scala, support multiple static/dynamic scenarios and html5/csv outputs
  • jmeter – Apache JMeter™, complete performance test suite with support for dynamic scenarios and various plugins

Go

  • bombardier – benchmarking tool using fasthttp
  • fasthttploader – simple benchmarking tool with basic charting
  • goad – AWS Lambda powered distributed load testing tool, good for multi-region testing
  • gobench – HTTP/HTTPS load testing and benchmarking tool, lacks configuration
  • hey – configurable load generator and load test tool, currently only output csv
  • slow_cooker – load tester focused on lifecycle issues and long-running tests with periodic reports
  • sniper – high-performance http load tester supports large files, support html5 reports
  • vegeta – configurable HTTP load testing tool, can also be used as a library for dynamic scenarios, good outputs.

C

  • ab - the og of benchmarking tools, slow and single threaded
  • apib - extension of ab with fewer dependencies and non-blocking IO for concurrency
  • curl-loader -
  • httpref -
  • weighttp - lightweight benchmarking tool, only support a small fraction of HTTP protocol
  • wrk2 - based on original wrk by Gil Tene, enhanced to be resistant to coordinated omission problem.

Other

  • yandex-tank (python) - extensible load testing tool, uses yandex's own phantom engine in the background, capable of generating ~100000 tps.
  • locust.io (python) - configurable load testing tool, can define user behaviour and run across multiple machines or kubernetes cluster
  • artillery (nodejs) - highly configurable load and functional testing toolkit, allows dynamic scenarios and can ship metrics to external monitoring systems
  • tsung (erlang) - distributed load testing tool, can simulate hundreds of users from single machine or distribute them on clusters
  • postman/newman - using newman cli as a postman collection runner

Load Testing Platforms

  • BlazeMeter - scalable, open source-based performance tests against web apps and services, support multiple performance script jMeter, Gatling etc...
  • Gatling Frontline - enterprise version of gatling.
  • Artillery Pro - load test tool deployed to your AWS account, allows distributed load testing
  • flood.io - platform to execute load tests in the cloud, highly scalable, supports selenium, jmeter and gatling scripts.

Application Performance Monitoring Tools

https://github.com/bestiejs/benchmark.js

  • New Relic APM - real time application performance monitoring, end to end transaction tracing
  • New Relic Browser - client side error and performance monitoring, observes page loads, response time and establish baseline for ongoing monitoring.
  • Nginx Amplify - a tool for comprehensive NGINX monitoring. With NGINX Amplify it's easy to proactively analyze and fix problems related to running and scaling NGINX-based web applications.
  • jHiccup - jvm agent to monitor for 'hiccup' in application
  • tigerprof - Java profiling tool which uses JVM TI. It can be used in conjugation with Flamegraph

Browser Performance Testing

Utility

  • HdrHistogram - library used to create high dynamic range histogram or percentile plot, available in various languages.

Talks

Articles

General

Performance Budget