Skip to content
Workload generator that emulates the traffic pattern of lobste.rs
Rust
Branch: master
Clone or download
Latest commit c55f9ca Sep 27, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data Even more up-to-date stats Mar 27, 2018
src Move to std::future Sep 27, 2019
.gitignore Ignore plots Mar 21, 2018
.travis.yml Meta Mar 15, 2018
Cargo.toml Move to std::future Sep 27, 2019
LICENSE-APACHE Meta Mar 15, 2018
LICENSE-MIT Meta Mar 15, 2018
README.md Meta Mar 15, 2018
README.tpl Meta Mar 15, 2018
data-import.rs rustfmt Jun 18, 2018
lobsters.diff Don't rate-limit comments Mar 16, 2018
rustfmt.toml Move to std::future Sep 27, 2019

README.md

trawler-rs

Crates.io Documentation Build Status

This crate provides a workload generator that emulates the traffic to lobste.rs. It is a mostly open-loop benchmark similar to TailBench, but it also approximates the partly open-loop designed outlined in Open Versus Closed: A Cautionary Tale by having clients potentially issue more than one query per request.

The benchmarker has two main components: load generators and issuers. Load generators generate requests according to actual lobste.rs traffic patterns as reported in here, records the request time, and puts the request description into a queue. Issuers take requests from the queue and issues that request to the backend. When the backend responds, the issuer logs how long the request took to process, and how long the request took from when it was generated until it was satisfied (this is called the sojourn time).

Trawler is written so that it can either be run against an instance of the lobsters Rails app or directly against a backend by issuing queries. The former is done using the provided binary, whereas the latter is done by linking against this crate as a library an implementing the [LobstersClient] trait. The latter allows benchmarking a data storage backend without also incurring the overhead of the Rails frontend. Note that if you want to benchmark against the Rails application, you must apply the patches in lobsters.diff first.

You can’t perform that action at this time.