Nginx リバース プロキシ サーバーの接続制限とリクエスト キューの調整方法
高同時実行ネットワーク アプリケーションを実行する場合、Nginx リバース プロキシ サーバーは非常に一般的で信頼性の高いオプションです。ただし、接続制限とリクエスト キューが適切に構成されていない場合、サーバーでパフォーマンスのボトルネックやサービス拒否の問題が発生する可能性があります。この記事では、Nginxを使用して接続数を制限し、リクエストキューを最適化する方法を紹介します。
接続数を制限する
Nginx は、worker_connections パラメーターを設定することで接続数を制限できます。このパラメータは、各ワーカー プロセスが同時に処理できる接続の最大数を指定します。接続数がこの制限に達すると、新しい接続は拒否されます。
Nginx 構成ファイルを開き、http ブロックを見つけて、次の行を追加または変更します:
http { ... worker_processes auto; worker_connections 1024; ... }
上記の例では、worker_connections が 1024 に設定されています。これは、各ワーカー プロセスが 1024 を処理できることを意味します。同時に接続します。サーバーのハードウェアのパフォーマンスとアプリケーションの要件に応じて、実際の条件に基づいて調整できます。サーバー リソースを最大限に活用するには、worker_processes の値を CPU コアの数の倍数に設定する必要があることに注意してください。
リクエスト キューのチューニング
同時接続数がworker_connectionsの制限を超えると、Nginxはリクエストを処理待ちのキューに入れます。リクエストキューの長さとタイムアウトを調整して、サービス拒否の可能性を最小限に抑えることができます。
Nginx 構成ファイルの編集を続けて、次の行を追加または変更します。
http { ... events { accept_mutex off; worker_connections 1024; worker_processes auto; multi_accept on; use epoll; ... } ... server { ... location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_buffering on; ... } ... } }
上の例では、リクエスト キューにいくつかの調整を加えました。まず、accept_mutex を off に設定することで、ミューテックスを無効にして、複数のワーカー プロセスが同時に新しい接続を受け入れることができるようにします。次に、Nginx がキュー内のすべてのリクエストをできるだけ早く処理できるように、multi_accept を on に設定します。最後に、実際のニーズに応じてタイムアウトとバッファ サイズを設定します。
コード例
以下は、バックエンド アプリケーションをシミュレートする、単純な Node.js サーバーの例です。
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World! '); }); server.listen(3000, 'localhost', () => { console.log('Server running at http://localhost:3000/'); });
上の例では、ローカル ポート 3000 をリッスンする単純な HTTP サーバーを作成しました。このサーバーはデモンストレーションのみを目的としているため、単純な「Hello, World!」文字列のみを返します。
Nginx をリバース プロキシ サーバーとして使用するには、上記のサンプル コードを server.js
という名前のファイルとして保存し、次のコマンドを実行してサーバーを起動する必要があります:
node server.js
次に、次の Nginx 構成を nginx.conf
という名前のファイルに保存します。
http { ... server { listen 80; location / { proxy_pass http://localhost:3000; } } }
次のコマンドを実行して Nginx を起動します。
nginx -c /path/to/nginx.conf
これで、次のことが可能になります。 http://localhost
にアクセスしてアプリケーションにアクセスします。すべてのリクエストは Nginx サーバーを通じてプロキシ処理され、負荷分散されます。
概要
接続数を制限し、要求キューを調整することで、同時実行性の高いネットワーク アプリケーションをより適切に管理できます。上記では、Nginx を使用して接続数を制限し、リクエスト キューを最適化する方法を説明し、簡単な Node.js サーバー コード例を示しています。実際のニーズとサーバーのハードウェア パフォーマンスに基づいて、適切な構成を調整してください。
以上がNginxリバースプロキシサーバーの接続制限とリクエストキューの調整方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。