
2026/06/14 22:43
zeroserve 向けの Caddy 互換性:透過率は 3 倍になり、レイテンシは 70% 削減されています。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
主な進歩は、Just-In-Time 機械語へのコンパイルを通じて標準設定ファイルに直接統合される完結した Turing(チューリング)完全な eBPF ロジックを備えた高性能 HTTPS サーバー「zeroserve」のリリースです。io_uring イベントループを活用し、Caddy や nginx のような競合他社よりも優れた速度と低いレイテンシを実現します。AMD Ryzen 7 3700X(2 スレッド)でのベンチマーク結果では、zeroserve-clang は 1.45ms の p50 レイテンシおよび 30.9 MiB のピークメモリ使用量で 38,948 リクエスト/秒を達成したのに対し、Caddy は 12,529 req/s および 67.4 MiB のメモリ使用量でした。現在は Caddy 互換モードがサポートされており、開発者が既存の Caddyfile シンタックスを使用してカスタムの eBPF プラグインを作成できるようになっています。例えば、S3 リバースプロキシ用 AWS SigV4 認証を実装するための
io.su3.aws-sigv4.c を使用できます。コアインフラストラクチャを変更せずに設定内で複雑なロジックを定義できるようにすることで、zeroserve は現代の HTTP サービングにおける効率性の新たな基準を設定します。バージョン v0.2.11 が標準的な Caddyfile 設定 /etc/caddy/Caddyfile でダウンロードおよびローカル使用が可能です。本文
zeroserve: Caddyfile 互換の高速 eBPF HTTPS サーバー
イントロダクション
zeroserve は、ユーザー空間で eBPF スクリプトを実行できる高パフォーマンスな HTTPS サーバー です。 今回、Caddy との互換性を実現する機能が追加されました。
- 動作原理: Caddyfile を提供すると、以下のように処理されます
- JIT コンパイルによる eBPF 変換
- ネイティブ x86_64/ARM64 機械語へのコンパイル
ベースのイベントループでの実行io_uring
プロトコルのベンチマーク結果 (HTTPS)
テスト環境: HTTPS リバースプロキシ、2 コアスレッド、AMD Ryzen 7 3700X
※詳細な実行結果は CI を参照してください。
| プロトコル | サーバー | 処理能力 (req/s) | p50 レイテンシ | p99 レイテンシ | ピーク RAM |
|---|---|---|---|---|---|
| HTTPS | zeroserve-clang | 38,948 | 1.45 ms | 3.91 ms | 30.9 MiB |
| HTTPS | zeroserve-tcc | 36,653 | 1.67 ms | 4.00 ms | 34.2 MiB |
| HTTPS | Nginx | 37,424 | 1.57 ms | 4.24 ms | 25.7 MiB |
| HTTPS | Caddy | 12,529 | 4.74 ms | 13.11 ms | 67.4 MiB |
注目: zeroserve-clang は Caddy よりも約 3 倍の処理能力を発揮しています。
Caddyfile で試してみる
ゼロサーバーを入手して、既存の Caddyfile をそのまま利用可能です。
- リポジトリからバイナリを取得
- 実行権限を与える
オプションで Caddyfile を読み込む--caddy
curl -fL -o zeroserve https://github.com/losfair/zeroserve/releases/download/v0.2.11/zeroserve-$(uname -m)-linux chmod +x zeroserve # Caddyfile を指定して起動 (デフォルトポート 8080) ./zeroserve --caddy /etc/caddy/Caddyfile # クリック確認 curl http://127.0.0.1:8080
チューリング完全な eBPF とカスタムコードの実行
zeroserve はチューリング完全な eBPFをサポートしており、Caddyfile からカスタムコードを呼び出すことができます。
活用シナリオ例
AWS SigV4 認証付きの S3 互換バケットへのリバースプロキシを設定する場合、
io.su3.aws-sigv4.c をプラグインとして読み込みます。
1. プラグインを指定して起動
# AWS SigV4 認証用の eBPF コードを読み込む ./zeroserve --plugin io.su3.aws-sigv4.c --caddy Caddyfile
2. Caddyfile 構成例
zeroserve_call ステートメントを使って、eBPF ミドルウェア内の関数を呼び出します。
example.com { route /s3/* { uri strip_prefix /s3 rewrite * /my-bucket{uri} # eBPF ミドルウェア io.su3.aws-sigv4.o の sign_request メソッドを呼び出す zeroserve_call io.su3.aws-sigv4.sign_request { access_key_id "minioadmin" secret_access_key "minioadmin" } reverse_proxy http://127.0.0.1:9000 } }