コンテンツにスキップ

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

テスト概要

項目詳細
テスト日2025年12月12日
対象エンドポイントGET /userinfo
目的Bearerトークン検証とユーザーデータ取得の最大スループットを測定

テスト環境

K6 Cloud構成

コンポーネント詳細
負荷生成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失敗ゼロ

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

サマリー

RPS総リクエスト数HTTP失敗CFワーカーエラーCF DOエラー状態
1,000146,231000
2,000293,947000
2,500365,648000⚠️
3,000436,456000⚠️

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

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

RPSP50MeanP95P99Max
1,0001141171392004,523
2,00011813325435029,717
2,5001271743255855,842
3,0001502981,0321,7365,462

結果 - インフラメトリクス

Worker Duration (ms)

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

Worker CPU Time (ms)

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検証オーバーヘッドは最小限

Durable Objects Wall Time (ms)

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、CF P99 < 50ms、エラー0%
ピーク対応≤2,500K6 P99 < 600ms、CF P99 < 200ms、エラー0%
絶対上限≤3,000K6 P99 < 2000ms、CF P99 < 250ms、DOエラー0%

主要な発見

1. JWT検証は高速

  • CPU時間P99: 全RPS帯で約4ms
  • V8 WebCrypto + JWKキャッシュでRS256検証は無視できるレベル

2. KeyManager DOは超高速

  • Wall time P99: 5-8msで安定
  • 高RPSで高キャッシュヒット率

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

  • Worker Duration P99が31ms→231msに上昇
  • CPU timeは横ばい - リクエストキューイングが原因

4. キャッシュが効果的

  • USER_CACHE(KV)でD1書き込みが一定
  • Read-throughパターンでコールドキャッシュミスを防止

5. 全RPS帯で100%成功率

  • 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、CF P99 < 50ms)
  • 2,500 RPSまで: 許容範囲(K6 P99 < 600ms、CF P99 < 200ms)
  • 3,000 RPS以上: 顕著な劣化(K6 P99 > 1,700ms)

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

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