nghttp2
RESTful API サーバーの実装に使用しています。と の 2 つの GET API を定義
/api/ping
し/api/wait
ました。前者への応答はすぐに送信されますが、サーバーは後者に応答する前に何らかの処理を行います。サーバーに 4 つのスレッドを割り当てました。
クライアント (これも を使用して実装nghttp2
) からサーバーに接続し、API 呼び出しを 1 つずつ/api/wait
行いました。最初に/api/ping
. Wireshark を使用して、2 つの GET 要求が 2 つの異なる TCP パケットで送信されていることを確認しました。ただし、サーバーが の処理を完了するまでは、他のスレッドが使用可能であっても、 を/api/wait
処理しません。/api/ping
クライアントから 2 つの TCP 接続を確立し、異なる接続で 2 つの API 呼び出しを行い、サーバーがそれらを並行して処理しました。
これは、nghttp2
1 つの TCP 接続を 1 つのスレッドで排他的に処理し、1 つの TCP 接続からの要求を順番に処理するように設計されているということですか? nghttp2
これを回避するための設定はありますか?これは、Web アプリケーション (要求を順次処理する) には適した機能かもしれませんが、API が互いに独立している API サーバーには適していません。