コンテンツにスキップ

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

項目詳細
テスト日2025年12月11日
対象エンドポイントGET /authorize?prompt=none
目的サイレント認証の最大スループットとパフォーマンス限界を測定
コンポーネント詳細
負荷生成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
],
}

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

Section titled “結果 - パフォーマンスメトリクス”
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⚠️
RPSHTTP失敗CF DOエラー状態
4,00002,112
4,5002871,376⚠️

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

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

Section titled “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
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
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)

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
メトリクス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失敗開始

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

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

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

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

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

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

Section titled “4. シャーディングでキャパシティ拡張”

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

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シャードが実用的な上限と考えられます。