コンテンツにスキップ

UserInfoエンドポイント負荷テスト

項目詳細
テスト日2025年12月12日
対象エンドポイントGET /userinfo
目的Bearerトークン検証とユーザーデータ取得の最大スループットを測定
コンポーネント詳細
負荷生成K6 Cloud (amazon:us:portland)
ターゲットhttps://conformance.authrim.com
プロトコルBearer Token (JWT RS256)
コンポーネントテクノロジー
コンピュートCloudflare Workers
鍵管理Durable Objects (KeyManager)
データベースCloudflare D1
ユーザーキャッシュCloudflare KV (USER_CACHE)
  1. R2に保存された4,000個の有効なアクセストークンを事前生成
  2. ウォームアップフェーズ: 50 RPSで30秒(DOをアクティブ化)
  3. ベンチマークフェーズ: ターゲットRPSで3分
  4. 各VUがランダムなトークンを選択して/userinfoを呼び出す
  • HTTPステータス200
  • レスポンスにsubクレームが存在
  • HTTP失敗ゼロ

結果 - パフォーマンスメトリクス

Section titled “結果 - パフォーマンスメトリクス”
RPS総リクエスト数HTTP失敗CFワーカーエラーCF DOエラー状態
1,000146,231000
2,000293,947000
2,500365,648000⚠️
3,000436,456000⚠️

: ⚠️はK6閾値超過(P95 > 500ms)を示します

K6クライアントレイテンシ(ms)

Section titled “K6クライアントレイテンシ(ms)”
RPSP50MeanP95P99Max
1,0001141171392004,523
2,00011813325435029,717
2,5001271743255855,842
3,0001502981,0321,7365,462
RPS総数P50P75P90P99P999
1,000146,23113.2214.1415.6231.2088.22
2,000293,94714.1116.5724.1544.54176.35
2,500365,64815.9927.5255.91178.63668.57
3,000436,45617.5850.69124.55231.23596.17
RPSP50P75P90P99P999
1,0001.101.231.504.025.28
2,0001.071.181.423.964.81
2,5001.061.171.433.974.85
3,0001.051.171.443.984.92

重要な発見: CPU時間はP50で約1msで安定 - JWT RS256検証オーバーヘッドは最小限

KeyManager DO(JWK取得・キャッシュ用):

RPS総DOリクエストDOエラーP50P75P90P99P999
1,000146,32400.821.873.387.8389.34
2,000294,02300.460.741.636.8740.59
2,500352,38800.400.581.195.4139.51
3,000366,98600.380.540.946.0758.62

重要な発見: 高RPS時にDO wall timeが改善(キャッシュヒット率向上のため)

用途推奨RPS根拠
通常運用≤2,000K6 P99 < 350ms、この測定での Worker duration P99 は約45ms、エラー0%
ピーク対応≤2,500K6 P99 < 600ms、この測定での Worker duration P99 は <200ms、エラー0%
絶対上限≤3,000K6 P99 < 2000ms、この測定での Worker duration P99 は <250ms、DOエラー0%
  • CPU時間P99: 全RPS帯で約4ms
  • V8 WebCrypto + JWKキャッシュでRS256検証は無視できるレベル
  • Wall time P99: 5-8msで安定
  • 高RPSで高キャッシュヒット率

3. Workerキューイングがボトルネック

Section titled “3. Workerキューイングがボトルネック”
  • Worker Duration P99が31ms→231msに上昇
  • CPU timeは横ばい - リクエストキューイングが原因
  • USER_CACHE(KV)でD1書き込みが一定
  • Read-throughパターンでコールドキャッシュミスを防止
  • 3,000 RPSでもHTTP失敗ゼロ
  • 過負荷でもシステムは信頼性を維持
エンドポイント推奨ピーク限界
サイレント認証2,000 RPS3,000 RPS4,000 RPS
UserInfo2,000 RPS2,500 RPS3,000 RPS

UserInfoのスループットが低い理由:

  • JWT検証オーバーヘッド
  • ユーザーデータのD1読み取り

AuthrimのUserInfoエンドポイントは:

  • 2,000 RPSまで: この測定では安定したレスポンス(K6 P99 < 350ms、Worker duration P99 約45ms)
  • 2,500 RPSまで: この測定では許容範囲(K6 P99 < 600ms、Worker duration P99 < 200ms)
  • 3,000 RPS以上: 顕著な劣化(K6 P99 > 1,700ms)

Durable Objects(KeyManager)は高速 - ボトルネックはCloudflare Workersのリクエストキューイングです。さらなるスケールアウトにはマルチリージョン展開またはWorker分散が必要です。

全RPS帯で100%成功率を達成 - スループット限界でも信頼性は維持されています。