コンテンツにスキップ

サイレント認証負荷テスト

テスト概要

項目詳細
テスト日2025年12月11日
対象エンドポイントGET /authorize?prompt=none
目的サイレント認証の最大スループットとパフォーマンス限界を測定

テスト環境

K6 Cloud構成

コンポーネント詳細
負荷生成K6 Cloud (amazon:us:ashburn)
ターゲットhttps://conformance.authrim.com
プロトコルHTTPS with PKCE (S256)

インフラ

コンポーネントテクノロジー
コンピュートCloudflare Workers
状態管理Durable Objects (シャード化)
データベースCloudflare D1
キャッシュCloudflare KV

シャード構成

Durable Object標準拡張
AuthorizationCodeStore64128
SessionStore64128
TokenStore4864

テスト方法論

シナリオ

  1. Admin APIで500ユーザーセッションを事前作成
  2. 各VUがランダムなセッションを選択してサイレント認証を実行
  3. 成功判定: HTTP 302リダイレクト + codeパラメータ

負荷パターン

{
executor: 'ramping-arrival-rate',
startRate: 0,
timeUnit: '1s',
preAllocatedVUs: 2500,
maxVUs: 3500,
stages: [
{ target: 1000, duration: '15s' }, // ramp-up
{ target: 2000, duration: '180s' }, // 維持
{ target: 0, duration: '15s' }, // ramp-down
],
}

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

サマリー(64シャード)

RPS総リクエスト数HTTP失敗CF DOエラー状態
50073,124013
1,000146,24900
1,500219,37400
2,000292,49900
2,500365,62400
3,000445,37800
3,500521,64600
4,000599,4401601,223⚠️

128シャードテスト

RPSHTTP失敗CF DOエラー状態
4,00002,112
4,5002871,376⚠️

効果: 128シャードで4,000 RPSのHTTP失敗がゼロに(64シャードでは160件)

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

RPSP50P95P99Max
500406.62453.68535.931,802
1,000403.44453.39528.182,978
2,000404.65451.84528.253,014
2,500652.44793.59837.715,181
3,0001,243.491,582.821,641.735,482
3,500614.851,631.441,727.458,077
4,000458.43668.645,621.6858,618

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

Worker Duration (ms)

RPSP50P75P90P99P999
50048.1449.9651.2768.10141.93
1,00049.4450.4551.7970.15155.28
2,00049.7450.8652.1568.27157.83
2,50082.86101.78116.63134.59157.84
3,000157.24180.27194.63222.03254.70
3,50076.16148.35193.47231.27257.43
4,00050.2356.2674.84175.813,750.00

Worker CPU Time (ms)

RPSP50P75P90P99P999
5002.242.783.238.0121.93
1,0002.352.783.1710.4723.27
2,0002.342.833.456.4020.30
3,0002.252.853.555.8017.38
4,0002.272.833.5313.6815.55

重要な発見: CPU時間はRPSに関係なく安定(P50で2-3ms)

Durable Objects Wall Time (ms)

RPS総DOリクエストDOエラーP50P75P90P99
500186,52013122.04180.60320.991,779
1,000399,2820170.87179.58189.45556
2,000747,0730169.92177.78183.42321
2,5001,097,6680180.54193.23408.75645
3,0001,336,6940183.39731.481,040.331,312
3,5001,565,2630178.94190.19690.621,381
4,0001,796,5561,223172.92182.15190.99442

シャーディング分析

4,000 RPSでの64 vs 128シャード

メトリクス64シャード128シャード改善
HTTP失敗1600✅ 解消
clientDisconnected1600✅ 解消
DOエラー1,2232,112⚠️ 増加
最大エラーなしRPS3,5004,000+500 RPS

注意: DOエラーの増加は新シャードのコールドスタートコストによるもの。ウォームアップ後は安定します。

キャパシティ推奨

用途推奨RPS根拠
通常運用≤2,000P99 < 600ms、エラー0%
ピーク対応≤3,000P99 < 1,700ms、エラー0%
絶対上限≤3,500P99 < 1,800ms、DOエラー0%
ハードリミット(128シャード)~4,000HTTP失敗開始

主要な発見

1. Workerは軽量

CPU時間は全RPS帯でP50が2-3ms - Worker自体はボトルネックではありません。

2. DOキューイングがボトルネック

高RPS時、DO wall timeはリクエストキューイングにより急増します(処理時間ではなく)。

3. 3,500 RPSでゼロエラー達成

64シャードで、システムは3,500 RPSをHTTP失敗なし、DOエラーなしで処理します。

4. シャーディングでキャパシティ拡張

64→128シャードへの増加でエラーなし限界が3,500→4,000 RPSに(+14%)。

5. 4,500 RPSがハードシーリング

128シャードでも4,500 RPSでタイムアウト発生(Worker Durationが3.75秒の上限に到達)。

結論

Authrimのサイレント認証エンドポイントは:

  • 64シャード: 3,500 RPSでゼロエラー
  • 128シャード: 4,000 RPSでゼロエラー(+14%向上)

推奨設定:

  • 通常運用: 64シャード(〜3,000 RPS)
  • 高負荷: 128シャード(〜4,000 RPS)

Cloudflare Workers + Durable ObjectsアーキテクチャはDOシャーディングによる効果的な水平スケーリングを実証しています。ただし、コールドスタートオーバーヘッドにより128シャードが実用的な上限と考えられます。