Skip to content

Latest commit

 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Sekigahara

worker_ignitor (east) と hook_receiver (west) の2つのRailsアプリケーションで構成される負荷試験用プロジェクト。

アプリケーション構成

worker_ignitor (east)

ジョブの登録・実行を行うアプリケーション。SolidQueueによるバックグラウンドジョブ処理を持つ。

  • POST /jobs - ジョブを登録(name: io / cpu / combination)
  • IoBoundJob: Webhookリクエストを送信
  • CpuBoundJob: BCryptによるパスワードハッシュ化
  • CombinationJob: 上記両方をランダム順で実行

hook_receiver (west)

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:migrate

負荷試験

k6/README.md を参照。

分析スクリプト

worker_ignitorディレクトリから実行する。

1. JobデータをCSVに出力

cd worker_ignitor
bin/rails runner scripts/export_jobs_csv.rb

storage/jobs_YYYYMMDDHHMMSS.csv にエクスポートされる。

2. 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レイテンシ

About

関ケ原Ruby会議01

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages