GNU/Linux >> Linux の 問題 >  >> Linux

今後の2022年に向けてNGINXを調整する方法は?

Nginxは、ロードバランサー、リバースプロキシ、HTTPキャッシュ、メールプロキシとして使用される無料のオープンソースの高性能で軽量なウェブサーバーです。 Nginxは他のWebサーバーと比較して非常に新しいものですが、その高性能のために人気が高まっています。デフォルトのNginx構成では、パフォーマンスが向上する可能性がありますが、一部の構成を変更することで、Nginxのパフォーマンスを最高の状態で向上させることができます。

この記事では、パフォーマンスを向上させるためにNginxをブーストするための8つの異なる最良の方法を知ることができます。この記事の例を示すために、Ubuntu20.04LTSシステムにNginxをインストールしました。

ワーカープロセスの変更

NginxのすべてのWebサーバー要求は、ワーカープロセスによって処理されます。 Nginxでは、ワーカープロセスは、リクエストを処理する複数のワーカープロセスとして設計されており、1つのマスタープロセスがすべてのワーカープロセスの管理と構成の分析を担当します。 Nginxのデフォルト構成では、ワーカープロセスパラメーターはautoに設定されており、使用可能なCPUコアに従ってワーカープロセスを生成します。 Nginxの公式ドキュメントで推奨されているように、使用可能なCPUコアに従ってワーカープロセスを維持するための最良の方法であるため、autoが推奨されるパラメーターです。プロセッサが何コアあるか知りたい場合は、次のコマンドを実行するだけです。

$ grep processor /proc/cpuinfo | wc -l

ワーカープロセスのデフォルト値は、/etc/nginx/nginx.confにあるNginx構成ファイルから変更できます。 サーバーのトラフィックが多く、ワーカープロセスを追加する必要がある場合は、サーバーをより多くのコアプロセッサにアップグレードすることをお勧めします。

ワーカー接続制限の強化

ワーカー接続は、使用可能な各ワーカープロセスが管理できる同時接続の総数です。デフォルトでは、ワーカープロセスは一度に512の接続を管理できます。ワーカー接続値を変更する前に、最大接続システムをチェックして、次のコマンドを使用してそれに応じて接続構成を更新できるようにする必要があります。

$ ulimit -n

コンテンツ圧縮の実装

Webコンテンツ圧縮の場合、Nginxはgzipを使用してコンテンツ配信時間を増やし、ネットワーク帯域幅の使用量を減らします。構成では、コメント化された状態のgzip構成を見つけることができますが、必要に応じてgzipのコメントを解除して変更することができます。 gzip圧縮プロセスでは、リソースが限られている場合はシステムリソースを使用するため、特定の種類のファイルのみを圧縮する、圧縮レベルなど、それに応じて構成を変更します。

静的コンテンツのキャッシュ

この現代のWeb開発では、ほとんどのコンテンツがブラウザまたはクライアントに静的に提供されるため、静的ファイルをキャッシュするとコンテンツの読み込みが速くなります。また、コンテンツがキャッシュから読み込まれるため、Nginxへの接続要求が減少します。キャッシュプロセスを開始するには、次のディレクティブをNginx仮想ホスト構成ファイルに追加します。

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

上記のディレクティブは、リソースファイルを30日間キャッシュします。必要に応じて、キャッシュの有効期限を設定できます。

バッファリング

バッファリングは、バッファがいっぱいになるまで応答の一部を保持するため、クライアントとサーバー間の通信をより効率的にすることができます。応答が実際のバッファサイズよりも大きすぎる場合、Nginxは応答をディスクに書き込み、パフォーマンスの問題を引き起こす可能性があります。次のディレクティブを更新して、要件に応じてバッファーサイズを調整できます。

Client_body_buffer_size :クライアントの応答データを保持するために使用される実際のバッファサイズを決定します。

Client_header_buffer_size :クライアントヘッダーのサイズを管理します。通常、値を1kに設定するだけで十分です。

Client_max_body_size :クライアントに許可される最大ボディ応答を制限します。本体サイズがその値を超えると、Nginxは「リクエストエンティティが大きすぎます」というエラーをスローします。

バッファリングサイズを調整するには、httpセクション内に次のディレクティブを追加します。

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

アクセスログバッファリング

ロギングは、問題のデバッグと監査における極めて重要な役割の1つです。ロギングは、パフォーマンスの問題を引き起こすI/OサイクルとCPUの両方に影響を与えるすべての要求データを保存するためです。ログへのバッファリングを有効にすることで、この種の影響を減らすことができます。バッファサイズが制限に達すると、Nginxはバッファの内容をログに書き込みます。サイズ値を持つバッファパラメータをアクセスログディレクティブに追加することで、バッファリングを有効にできます。

access_log /var/log/nginx/access.log main buffer=16k;
Code language: JavaScript (javascript)

または、次の方法でアクセスログを無効にすることができます(不要な場合)。

access_log off;

タイムアウト値の制限

タイムアウト値を制限すると、Nginxのパフォーマンスが向上します。 Nginxは、指定された期間、クライアントの本文とヘッダーのリクエストを待ちます。時間内に応答データを受信しない場合、Nginxはそれぞれのクライアントのタイムアウトをトリガーします。タイムアウト値は、次のディレクティブで管理できます。タイムアウト期間を設定するには、以下のディレクティブをコピーしてhttpセクションに貼り付けます。

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

クライアントの本文とヘッダーのタイムアウトは、Nginxがクライアントリクエストからヘッダーと本文を読み取る期間です。時間内に完了しなかった場合、要求はタイムアウトエラーで終了します。 Keepalive_timeoutは、nginxがクライアント接続を閉じてからキープアライブ接続が開いたままになるまでの期間です。 Send_timeoutは、クライアントがNginxによって送信された応答を受信する必要がある期間です。

ファイルキャッシュを開く

Linuxでは、ほとんどすべてがファイルです。open_file_cacheを使用すると、ファイル記述子と頻繁にアクセスされるすべてのファイルがサーバーにキャッシュされます。特に、オープンファイルキャッシュを使用して静的Htmlファイルを提供する場合、キャッシュを開いて特定の間隔でメモリに保存するため、Nginxのパフォーマンスが向上します。次のopen_file_cacheのディレクティブをhttpセクションに配置して、キャッシュを開始します。

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

結論

これらは、Nginx構成ファイルを簡単に変更することでNginxのパフォーマンスを向上させる8つの方法です。この記事を読むことが、Nginxのパフォーマンス向上を開始するのに役立つことを願っています。


Linux
  1. コンソールで大きなファイルをチェックする方法

  2. WP-CLI用のイメージオプティマイザーパッケージの使用方法

  3. Linux:デバイスに使用されているデバイスドライバーを見つける方法は?

  1. sudoにパスワードを長く覚えさせる方法

  2. Kali は今後の Python 2 のサポート終了にどのように対処するか

  3. 実行中のコンテナのホスト名を指定するには?

  1. sshfs の鍵ファイルを指定するにはどうすればよいですか?

  2. sudo に root パスワードを要求させるにはどうすればよいですか?

  3. Debian VM の Bash の解像度を変更するにはどうすればよいですか?