本文へ移動

パフォーマンスとリソース効率の検証

fn-knock と同種の他製品を同じ環境で動かし、同じ条件で負荷テストを行いました。以下の数値は今回のテストだけを示すもので、第三者認証ではありません。ハードウェアや実際のトラフィックが変われば、結果も変わります。

スループットreq/s

64 同時接続

fn-knock13,529
他製品2,992

256 同時接続

fn-knock12,982
他製品4,251

512 同時接続

fn-knock13,026
他製品4,642
P99 レイテンシms · 低いほど良い

64 同時接続

fn-knock30.38
他製品81.52

256 同時接続

fn-knock242.29
他製品272.92

512 同時接続

fn-knock498.68
他製品573.10
同時接続 512 での CPU とメモリ

サービス CPU

fn-knock5.81 コア
他製品4.37 コア

コアあたりのスループット

fn-knock2,242 req/s/コア
他製品1,063 req/s/コア

平均メモリ(RSS)

fn-knock153.4 MiB
他製品325.6 MiB
負荷テスト前後のメモリ変化MiB
58.3121.4
負荷テスト前
153.4325.6
高負荷時平均
228.6610
記録ピーク
132.8201.7
クールダウン後

結果の概要

主なテストでは、2 つのゲートウェイに同じ HTTPS 404 リクエストを送信しました。今回、fn-knock はスループットが高く、P99 が低く、CPU コアあたりの処理数が多く、メモリ使用量も少ない結果でした。P99 は 99% のリクエストが完了するまでの時間で、低いほど良い値です。

指標fn-knock他製品結果
同時接続 512 のスループット13,026 req/s4,642 req/sfn-knock は 2.81×
同時接続 512 の P99498.68 ms573.10 msfn-knock が 12.99% 低い
コアあたりのスループット2,242 req/s/コア1,063 req/s/コアfn-knock が 110.89% 高い
高負荷時の平均メモリ(RSS)153.4 MiB325.6 MiBfn-knock が 52.90% 少ない

ループバックアドレスのリクエストログを無効にしても、fn-knock のスループットはほぼ変わりませんでした。P99、CPU、メモリの変動はわずかに改善し、この負荷テストのリクエストはアクセスログへ書き込まれなくなりました。

テスト条件

項目設定
テスト日2026-07-31
負荷生成ツールwrk、8 スレッド
同時接続数64、256、512
主なリクエストHTTPS、Host は loadtest.invalid、どのルートにも一致せず 404 を返す
リソース記録pidstat で対象サービスプロセスの CPU と RSS の平均値を記録。RSS はプロセスが使用する物理メモリの目安
テスト環境wrk と 2 つの対象サービスが同じ 8 コアのリソースを共有し、各回で同じツールと同時接続設定を使用

この構成ならネットワーク経路の差を小さくできますが、wrk 自体も CPU を使います。したがって、数値は 8 コア環境全体で動かした結果です。サービスがハードウェアを専有した場合の上限ではなく、実際のインターネット遅延も含みません。

スループットと P99 レイテンシ

同時接続fn-knock スループット他製品スループットfn-knock の優位性fn-knock P99他製品 P99
6413,529 req/s2,992 req/s352.14%30.38 ms81.52 ms
25612,982 req/s4,251 req/s205.36%242.29 ms272.92 ms
51213,026 req/s4,642 req/s180.63%498.68 ms573.10 ms

fn-knock は同時接続 64 の時点で約 13.5k req/s に達していました。それ以上増やしてもスループットはほとんど伸びず、待ち時間だけが長くなりました。他製品は同時接続数を 256 から 512 に増やしたとき、スループットが約 9.2% しか増えなかった一方、P99 は約 110% 増加しました。これ以上同時接続を増やしても、処理数より遅延の増加が目立つ状態です。

同時接続 512 でのリソース効率

指標fn-knock他製品解釈
サービス CPU5.81 コア4.37 コアfn-knock は CPU を 33.07% 多く使用
スループット13,026 req/s4,642 req/sfn-knock はリクエストを 180.63% 多く処理
コアあたりのスループット2,242 req/s/コア1,063 req/s/コアfn-knock が 110.89% 高い
高負荷時の平均メモリ(RSS)153.4 MiB325.6 MiBfn-knock が 52.90% 少ない

同時接続 512 では fn-knock の CPU 使用量が多くなりましたが、CPU の増加分以上に多くのリクエストを処理しています。各コアが完了した仕事量も多い結果です。CPU 使用率だけでなく、スループット、P99、エラー率を合わせて確認してください。

負荷テスト前後のメモリ変化

段階fn-knock他製品他製品 / fn-knock
負荷テスト前58.3 MiB121.4 MiB2.08×
高負荷時の平均153.4 MiB325.6 MiB2.12×
記録されたピーク228.6 MiB610.0 MiB2.67×
同じテスト回のクールダウン後132.8 MiB201.7 MiB1.52×

他製品のメモリピークは 610.0 MiB でした。再テストでは 6 回のタイムアウトが発生し、P99 は一時 1.12 秒に達しました。fn-knock の再テストではタイムアウトがなく、メモリピークもそれ以上増えませんでした。

今回の再テストは短いため、短期的なピークと負荷後の低下しか確認できません。メモリが増え続けるか、リークがあるかを判断するには、同じリクエストを 30~60 分以上続け、複数回テストする必要があります。

負荷テストのリクエストログを無効にした場合

fn-knock でループバック送信元のリクエストログを無効にし、その直前の有効なテスト回と比較した結果は次のとおりです。

同時接続スループットの変化P99 の変化平均レイテンシの変化
64−4.06%−13.52%+0.67%
256−0.72%−10.63%−10.08%
512+0.32%−6.83%−5.03%

同時接続 512 でのスループット差は 0.32% だけで、テストのばらつきとみなせます。P99 は 6.83%、平均 CPU 使用量は 0.96%、平均メモリは 5.39% 低下しました。この回では 593,792 リクエストを送信し、アクセスログは増えませんでした。

今回、リクエストログは主な性能制限ではありませんでした。無効にしても RPS はほとんど上がらず、主な効果はディスク書き込みと CPU・メモリ変動の削減です。本番環境で何を記録するかは、監査、ストレージ、トラブルシューティングの要件で決めてください。

7998 管理 API はゲートウェイと直接比較できない

テストでは 7998 管理 API の readiness リクエストも記録しました。

経路リクエスト内容スループットP99サービス CPU平均メモリ(RSS)
fn-knock ゲートウェイ 7999HTTPS 404、CIDR 判定とルーティング13,026 req/s498.68 ms5.81 コア153.4 MiB
他製品HTTPS 4044,642 req/s573.10 ms4.37 コア325.6 MiB
管理 API 7998ゲートウェイ状態確認を含む HTTP readiness5,157 req/s162.46 ms2.01 コア169.3 MiB

7998 は管理インターフェースで、7999 がユーザーのアクセスを処理するゲートウェイです。2 つのリクエストは処理内容が違うため、数値を直接順位付けしたり、7998 からリバースプロキシ容量を推定したりできません。管理 API はアプリケーションの入口ではありません。公開する前に OpenAPI:管理 API の公開と AI Agentを確認してください。

この数値を使うときの注意

  • 今回、fn-knock は同時接続 64 付近ですでにスループット上限に近づいていました。それ以上増やすと、主に待ち時間が増えます。
  • fn-knock の短期的なメモリ使用量は少ない結果でしたが、長期安定性は継続テストで確認する必要があります。
  • ログを無効にするかどうかは運用と監査の要件で決め、ベンチマークの点数だけで判断しないでください。
  • 79987999 は処理内容が違うため、2 つの結果を同じ順位表に入れないでください。

測定範囲と制限

  • 主な 2 つの比較経路では、HTTPS、同じ Host、未一致ルートの 404 を使用しましたが、レスポンス本文のサイズは異なります。fn-knock は約 11.5 KiB、他製品は約 65 B でした。fn-knock はレスポンス本文が大きい状態でも高いスループットを記録しました。
  • 今回は TLS、CIDR 判定、ルート照合、ゲートウェイが直接返す 404 を測定しました。特定のアップストリームアプリケーションは含まないため、すべての業務の実速度を示すものではありません。
  • 「他製品」は今回使用したバージョンと設定だけを指します。他のバージョン、別のデプロイ方法、すべての同種製品をこの結果だけで判断できません。
  • ハードウェア、カーネル、TLS、証明書、ログ、接続再利用、レスポンスサイズ、ネットワーク経路によって結果は変わります。自分の環境ではスクリプトと設定を固定して複数回実行し、スループット、P99、エラー率、CPU、メモリ、接続数を一緒に記録してください。
  • 本番環境には余裕を残してください。応答時間を重視する場合は、このページの数値をそのまま使わず、実際のリクエストで許容できる同時接続数を確認してください。

QQ コミュニティ:1081609274