Pingclair は nginx と Caddy と同一ホスト上で測定しています。各候補は 2 CPU に制限したコンテナで動作し、ワーカー数と 1 KiB のペイロードも同一です。リバースプロキシのバックエンドは同じ Docker ネットワーク上の別コンテナで、負荷生成ツールはネイティブで実行します。

## 📊 結果

各値は 3 回の交互実行（各 50,000 リクエスト）の中央値です。すべてのリクエストが成功した行だけを集計しています。

| シナリオ | Pingclair | nginx 1.31.6 | Caddy 2.11.4 |
| --- | ---: | ---: | ---: |
| HTTP/1.1 静的 | 46,125 | 39,478 | 18,266 |
| HTTPS/1.1 静的 | 40,721 | 31,508 | 19,978 |
| HTTP/2 静的 | 92,369 | 41,972 | 17,424 |
| HTTP/3 静的 | 56,180 | 55,638 | 22,912 |
| HTTP/1.1 リバースプロキシ | 20,856 | 22,584 | 17,117 |
| HTTPS/1.1 リバースプロキシ | 20,297 | 21,944 | 16,660 |
| HTTP/2 リバースプロキシ | 23,181 | 20,396 | 未完了 |
| HTTP/3 リバースプロキシ | 28,078 | 22,213 | 未完了 |

単位は 1 秒あたりのリクエスト数です。nginx と比べると、静的配信では HTTP/1.1、HTTPS/1.1、HTTP/2 で Pingclair が先行し（それぞれ 1.2 倍、1.3 倍、2.2 倍）、HTTP/3 はほぼ同等です。リバースプロキシでは HTTP/2 が 14%、HTTP/3 が 26% 先行し、HTTP/1.1 と HTTPS/1.1 は nginx に約 8% 劣っています。

## 📐 この数字を制限する条件

- **ホストはノート PC です。** 測定は Apple M2 と OrbStack 上で行いました。絶対スループットは容量の主張ではなく、比率もこの統制された負荷における相対性能を述べたものです。
- **行の比較は同一プロトコル内に限ります。** HTTP/3 は他の行と異なる負荷生成ツールを使うため、絶対スループットをプロトコル間で比較せず、同一行内でサーバー間を比較してください。
- **未完了のセルは比較ではありません。** このホストとこの測定系では、Caddy はリバースプロキシの HTTP/2 と HTTP/3 の行を完了できませんでした。試験した同時実行数で上流接続の生成が頻発し、コンテナが使える一時ポートを使い切ったためです。これらのセルは、別の負荷で測った数字ではなく「未完了」として記載します。
- **結果はホストに依存します。** サーバー間の相対順位は CPU アーキテクチャ、カーネル、ワーカー数、TLS 実装によって変わります。

## 🧾 出典

方法論、設定ファイル、負荷生成ツール、完全な結果表はサーバーリポジトリにあります。

- [測定方法](https://github.com/dorianverlaine/pingclair/blob/main/benchmarks/README.md)
- [現在の結果セクション](https://github.com/dorianverlaine/pingclair#-benchmarks)

生の実行証跡はメンテナーがローカルに保管しており、意図的に公開していません。
