Skip to content

Conversation

@takaokouji
Copy link

概要

MESH v2負荷テストのDynamoDBパフォーマンス監視機能を追加しました。負荷テスト実行時のスロットリング検出とキャパシティ消費量の確認が簡単にできるようになります。

追加機能

1. check-dynamodb-metrics.sh スクリプト

DynamoDBのメトリクスを自動的にチェックするシェルスクリプトです。

主な機能:

  • ✅ スロットリング発生数の確認(ThrottledRequests)- 最重要
  • ✅ 読み込みキャパシティ消費量の監視(ConsumedReadCapacityUnits)
  • ✅ 書き込みキャパシティ消費量の監視(ConsumedWriteCapacityUnits)
  • ✅ システムエラーの検出(SystemErrors)
  • ✅ ユーザーエラーの検出(UserErrors)
  • ✅ 課金モードの表示(PAY_PER_REQUEST / PROVISIONED)
  • ✅ カスタム時間範囲のサポート(デフォルト: 過去1時間)
  • ✅ macOS/Linux両対応の日付処理

2. README.md更新

新しいセクション「DynamoDB Performance Monitoring」を追加:

  • スクリプトの使い方(日本語で説明)
  • 確認項目の詳細説明
  • テーブル名の確認方法
  • スロットリング発生時のトラブルシューティングガイド

使用例

cd test/load-test

# 基本的な使い方(過去1時間のメトリクスを確認)
./check-dynamodb-metrics.sh mesh-v2-groups-table

# 過去2時間のメトリクスを確認
./check-dynamodb-metrics.sh mesh-v2-groups-table 2

# 使い方とテーブル一覧を表示
./check-dynamodb-metrics.sh

出力例

=========================================
DynamoDB メトリクス確認
=========================================
テーブル名: mesh-v2-groups-table
期間: 2025-12-31T13:00:00Z ~ 2025-12-31T14:00:00Z
=========================================

【課金モード】
BillingMode: PAY_PER_REQUEST

【1. スロットリング発生数】★最重要★
   期待値: 0 (スロットリングが発生していないこと)
   ✅ データなし(スロットリングなし)

【2. 読み込みキャパシティ消費量】
| Timestamp           | Average | Maximum |
|---------------------|---------|---------|
| 2025-12-31 13:15:00 | 12.5    | 25.0    |
| 2025-12-31 13:20:00 | 15.2    | 30.1    |
...

技術詳細

CloudWatch メトリクス

以下のDynamoDB CloudWatchメトリクスを取得します:

  • ThrottledRequests: スロットリング発生回数(0であることが理想)
  • ConsumedReadCapacityUnits: 読み込みに使用されたキャパシティユニット
  • ConsumedWriteCapacityUnits: 書き込みに使用されたキャパシティユニット
  • SystemErrors: DynamoDB側のシステムエラー
  • UserErrors: アプリケーション側のエラー

日付処理の互換性

macOSとLinuxの両方で動作するよう、dateコマンドの違いに対応:

# GNU date (Linux)
date -d "1 hour ago"

# BSD date (macOS)
date -v-1H

テスト

動作確認

# スクリプトの実行権限確認
ls -l check-dynamodb-metrics.sh
# -rwxr-xr-x ... check-dynamodb-metrics.sh

# ヘルプ表示確認
./check-dynamodb-metrics.sh
# → 使い方とテーブル一覧が表示される

# 実際のテーブルで実行(環境によって異なる)
./check-dynamodb-metrics.sh mesh-v2-groups-table
# → メトリクスが正常に表示される

関連Issue

チェックリスト

  • スクリプトに実行権限を付与
  • macOS/Linux両対応を確認
  • README.mdに日本語の使用方法を追加
  • エラーハンドリングの実装
  • 分かりやすい出力フォーマット

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

Added check-dynamodb-metrics.sh to monitor DynamoDB performance and
detect throttling during load tests.

Features:
- Checks throttling (ThrottledRequests) - most important metric
- Monitors consumed read/write capacity units
- Detects system and user errors
- Displays billing mode (on-demand vs provisioned)
- Supports custom time ranges (default: past 1 hour)
- macOS/Linux compatible date handling
- Japanese language interface

Updated README.md with:
- DynamoDB Performance Monitoring section
- Usage examples in Japanese
- Troubleshooting guide for throttling issues
- Table name discovery commands

Usage:
  ./check-dynamodb-metrics.sh <table-name>
  ./check-dynamodb-metrics.sh <table-name> 2  # past 2 hours

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@takaokouji takaokouji merged commit 226d707 into develop Dec 31, 2025
1 check passed
@takaokouji takaokouji deleted the feature/dynamodb-metrics-monitoring branch December 31, 2025 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants