Ruby on Rails load testing habits

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Scout Monitoring - Rennaisance engineers rejoice! 1 gem 5 min to app monitoring
5-minute onboarding. No sales team. Devs in the support channels. No DevOps team required. Get the free app insights every engineer deserves with Scout Monitoring.
https://www.scoutapm.com/ruby-monitoring?utm_source=libhunt_ruby&utm_medium=affiliate&utm_campaign=june24&utm_content=newsletter_ad
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
  • artillery

    The complete load testing platform. Everything you need for production-grade load tests. Serverless & distributed. Load test with Playwright. Load test HTTP APIs, GraphQL, WebSocket, and more. Use any Node.js module.

  • Don't write your own load testing tool other than as a fun little exercise. At least not without understanding coordinated omission and thinking about workload modeling (open? closed? hybrid? all of the above?) [1]. Get this wrong and the results produced by your tool will be worthless. Once you've got that out of the way, don't forget that you'll want a distribution story. It does not matter how efficient your tool might be on a single machine - you'll want to distribute your tests across multiple clients for real-world testing. "Sure it's easy" you might say, "I know UNIX. Give me pssh and a few VMs on EC2". Well, now you've got 2 problems: aggregating metrics from multiple hosts and merging them accurately (especially those pesky percentiles. Your tool IS reporting percentiles rather than averages already, right?!), and a developer experience problem - no one wants to wrangle infra just to run a load test, how are you going to make it easier? And, this developer experience problem is much bigger than just sorting out infra... you'll probably want to send the metrics produced by your tool to external observability systems. So now you've got some plugins to write (along with a plugin API). The list goes on.

    I'm very biased, but it's 2024. Don't waste your time and just https://www.artillery.io/

    1. https://www.artillery.io/blog/load-testing-workload-models

  • wrk

    Modern HTTP benchmarking tool

  • > My initial requirement was to send requests with unique parameters. To the best of my knowledge, no tool could do this.

    wrk does this with lua. https://github.com/wg/wrk/blob/master/src/wrk.lua

    Also even things like the venerable jmeter supported pulling parameters from a csv file.

  • Scout Monitoring

    Rennaisance engineers rejoice! 1 gem 5 min to app monitoring. 5-minute onboarding. No sales team. Devs in the support channels. No DevOps team required. Get the free app insights every engineer deserves with Scout Monitoring.

    Scout Monitoring logo
  • Ruby on Rails

    Ruby on Rails

  • Rails isn't super opinionated about database writes, its mostly left up to developers to discover that for relational DBs you do not want to be doing a bunch of small writes all at once.

    That said it specifically has tools to address this that started appearing a few years ago https://github.com/rails/rails/pull/35077

    The way my team handles it is to stick Kafka in between whats generating the records (for us, a bunch of web scraping workers) and and a consumer that pulls off the Kafka queue and runs an insert when its internal buffer reaches around 50k rows.

    Rails is also looking to add some more direct background type work with https://github.com/basecamp/solid_queue but this is still very new - most larger Rails shops are going to be running a second system and a gem called Sidekiq that pulls jobs out of Redis.

  • solid_queue

    Database-backed Active Job backend

  • Rails isn't super opinionated about database writes, its mostly left up to developers to discover that for relational DBs you do not want to be doing a bunch of small writes all at once.

    That said it specifically has tools to address this that started appearing a few years ago https://github.com/rails/rails/pull/35077

    The way my team handles it is to stick Kafka in between whats generating the records (for us, a bunch of web scraping workers) and and a consumer that pulls off the Kafka queue and runs an insert when its internal buffer reaches around 50k rows.

    Rails is also looking to add some more direct background type work with https://github.com/basecamp/solid_queue but this is still very new - most larger Rails shops are going to be running a second system and a gem called Sidekiq that pulls jobs out of Redis.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • How to use database triggers in Rails

    2 projects | dev.to | 27 May 2024
  • Building an Ruby on Rails MVP.

    1 project | dev.to | 24 May 2024
  • Normalization in Rails 7.1 era

    2 projects | dev.to | 21 May 2024
  • Enabling Rails 7.0's New Framework Defaults

    1 project | dev.to | 18 May 2024
  • Enum validation in Ruby on Rails 7.1

    1 project | dev.to | 14 May 2024