worker_ignitor (east) と hook_receiver (west) の2つのRailsアプリケーションで構成される負荷試験用プロジェクト。
ジョブの登録・実行を行うアプリケーション。SolidQueueによるバックグラウンドジョブ処理を持つ。
POST /jobs- ジョブを登録(name: io / cpu / combination)- IoBoundJob: Webhookリクエストを送信
- CpuBoundJob: BCryptによるパスワードハッシュ化
- CombinationJob: 上記両方をランダム順で実行
Webhookを受信するアプリケーション。
GET /events- イベント一覧POST /events- イベント作成
各アプリのディレクトリでPostgreSQLを起動し、DBを作成する。
cd worker_ignitor && docker compose up -d && bin/rails db:create db:migrate
cd hook_receiver && docker compose up -d && bin/rails db:create db:migratek6/README.md を参照。
worker_ignitorディレクトリから実行する。
cd worker_ignitor
bin/rails runner scripts/export_jobs_csv.rbstorage/jobs_YYYYMMDDHHMMSS.csv にエクスポートされる。
ruby scripts/analyze_jobs.rb storage/jobs_YYYYMMDDHHMMSS.csv以下を出力する:
- ステータス別・name別の件数内訳
- 待ち時間(registered_at → started_at)の統計: min, max, avg, median, p50, p90, p99, p99.5
- 実行時間(started_at → finished_at)の統計: 同上
- name別(io, cpu, combination)の内訳統計
- 10秒ウィンドウ別のP99レイテンシ