Skip to content

wasuken/mysql_loadtest_app

Repository files navigation

MySQL Read Replica Load Test

MySQLのリードレプリカ構成による負荷分散効果を検証するプロジェクト

🚀 Quick Start

# プロジェクト設定
./setup.sh

# サービス起動
docker-compose up -d

# データベース初期化(初回のみ)
# データ再投入も可能
make init-db

# レプリケーション設定(初回のみ)
make replication

# 負荷テスト実行
make load-test

# モニタリング(別ターミナル)
make monitor

📊 測定項目

  • パフォーマンス

    • Requests/sec
    • レスポンス時間 (平均, 95%, 99%)
    • スループット
  • リソース使用量

    • CPU使用率
    • メモリ使用量
    • ネットワークI/O
  • レプリケーション

    • レプリケーション遅延
    • 読み書き分散効果

🎯 負荷パターン

  • Read操作 (70%)

    • 単一ユーザー取得: 60%
    • ユーザーリスト取得: 30%
    • 検索: 10%
  • Write操作 (30%)

    • 新規作成: 70%
    • 更新: 20%
    • 削除: 10%

📋 エンドポイント

  • GET /health - ヘルスチェック
  • GET /users/:id - ユーザー取得
  • GET /users - ユーザーリスト
  • GET /users/search/:name - ユーザー検索
  • POST /users - ユーザー作成
  • PUT /users/:id - ユーザー更新
  • DELETE /users/:id - ユーザー削除
  • GET /stats - アプリケーション統計

🔧 環境要件

  • Docker & Docker Compose
  • wrk (負荷テストツール)
  • 16GB+ RAM推奨

📈 結果分析

負荷テスト結果をもとに以下を分析:

  1. リードレプリカ有無による性能差
  2. リソース使用量の違い
  3. レプリケーション遅延の影響
  4. スケールアウト効果

🗂️ プロジェクト構成

mysql-replica-load-test/
├── compose.yml       # Docker設定
├── mysql/
│   ├── mysql-master.cnf    # Master設定
│   └── mysql-slave.cnf     # Slave設定
├── app/                    # Node.jsアプリ
│   ├── Dockerfile
│   ├── package.json
│   └── app.js
├── load-test/
│   └── test-replica.lua    # wrk負荷テストスクリプト
├── init-db.sql            # DB初期化
├── setup-replication.sh   # レプリケーション設定
├── run-load-test.sh       # 負荷テスト実行
└── monito.sh             # モニタリング

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published