
ここでの私の質問の過程で大規模なリクエストを送信すると、実稼働サーバーはローカル テスト サーバーより大幅に遅くなります。私は、Web サーバー、特に nginx が実際に何をするのかをもっと深く理解しようとしています。基本的には、長い間当たり前だと思っていたアーキテクチャをより深く理解したいのです。些細なことかもしれませんが、聞いてください...
私は nginx と gunicorn を使用して django アプリを実行しており、サーバーに post リクエストを送信しています。パフォーマンスの問題がどこにあるのかを理解しようとしているので、リクエストがどのように処理されているかを詳しく理解したいと考えています。
ライブラリ経由で POST リクエストを送信していますrequests
。私の理解では、インターネットで送信されるすべてのデータはHTTP
- プロトコルを使用しているため、基本的に送信するデータはテキスト形式で送信されます。正しいですか? Python オブジェクト/データ構造のコード解釈はまったくありませんか? つまり、nginx に到達するリクエストのサイズは、テキスト形式に変換されたリクエストのサイズだけですか?
さらに理解を深めると、nginx はテキスト形式でこのリクエストを受信し、このリクエストをどのように処理するかを決定します...このリクエストを Web (django) アプリケーション (または、バックエンド サーバーと言った方が良いかもしれません) に転送し、そこでコードが実行され、データが DB に書き込まれます。
では、nginx はリクエストを転送するだけですか? それとも他に何かするのですか?
次に、コードまたはデータベースはエラーをスローするか、nginx に成功メッセージを返します。nginx はそれをサーバー出力として返します (404、405、201 などのコードなど)。
そこで私の質問は、nginx はこれらの API リクエストをどのように処理し、どのように解釈するのかということです。
答え1
nginx は、リクエストをバックエンド サーバーに転送するだけです。クライアントとネゴシエートした場合の圧縮を除き、データに対して追加の操作は実行しません。
99% のケースでは、nginx にはパフォーマンスに大きな影響を与えるものは何もありません。パフォーマンスの問題を分析する必要があるのは、実際のアプリケーションです。