サーバー A、B、C、D、E がいくつかあります...そのうち、A は外部ネットワークにアクセスできますが、他のサーバーはアクセスできません。http_proxy メソッドを使用して、A 経由で外部ネットワークにアクセスします。主な目的パートナーのインターフェイスにアクセスすることです。たとえば、http://api.xxx.com/get/user では、1 秒あたり約数百回アクセスされます。
ここ数日、A とパートナー サーバー (Z とします) の間で長い接続を維持できるかどうかを確認してみました。変更とテストの後、Z から返されるヘッダーにはすでに http/ 1.1 接続をキープアライブとして実行していますが、ソケットの -wait 時間が依然として非常に長いです。さらに、A のログでは、nginx の $connection パラメーターが常に増加しています。これはなぜですか?
以下は A のプロキシ パス設定です:
リーリー私の設定に問題があるのでしょうか?インターネットのことが理解できず、ただいじっているだけです。知識のある方、アドバイスをいただければ幸いです。ありがとうございます
公式ブログを見てこの質問を転送したので、ご自身で解決したかどうかわかりませんが、お手伝いに来ました。
まず最初に、設定について説明します。どこから来たのかはわかりません。例として、proxy_pass を例に挙げます。これは、元のアドレスを指します。マシン ( 10.0.0.100/api/user (10.0.0.100) であるとします。$host は 10.0.0.100、$request_uri は/api/user であるため、ここで何か奇妙なことが起こりました。A にアクセスし、A にプロキシします。もう疲れ果てて少し眠いので、この状況で何が起こるかについては説明しません。 ----------------決定は上流のあなたです----------------
パラメータここで、アクセスする必要がある外部ネットワーク IP を 123.123.123.123 に設定します。
$host$request_uri
リーリーまた、一部のパラメーターの意味がわからない場合は、ビジネス シナリオに適していない可能性があるため、追加しないでください
ここでは、アップストリームのこの
の説明に焦点を当てます。 HTTP 1.1 仕様では、HTTP/2 のようなリクエスト識別子がないことがわかっており、キープアライブ TCP 接続は一度に 1 つの http リクエストしか送信できません。これが、リクエストが返されるまで送信できない理由です。パフォーマンス Web サーバー (Tengine など) が js などの静的ファイルを 1 つにマージするのはなぜですか (時間と接続を節約するため)
ここで 10 という数字を使用するのはなぜですか? 外部ホストをリクエストして返すのに 100 ミリ秒かかると仮定すると、1 秒あたり 100 回の要件を完了するには、1 つの TCP が 10 回のリクエストを完了する必要があります。 , おおよそのアルゴリズムはこんな感じです。実際にはこの数値を計算値よりも適当に大きく設定すると安定性が高まるかも知れません
keepalive
ご質問がございましたら、メッセージを残してください
すみません: 現時点でバックエンド サーバーが動的である場合、アップストリームのキープアライブを使用して nginx とバックエンドの接続が長くなることを確認するにはどうすればよいですか?ありがとう!