お問い合わせ

info@serverion.com

お電話ください

+1 (302) 380 3902

最適な Web サーバー パフォーマンスを実現する Nginx 構成の習得

最適な Web サーバー パフォーマンスを実現する Nginx 構成の習得

より高速なウェブサイトとより良い サーバーのパフォーマンス? Nginx が役立ちます。 Nginx はイベント駆動型設計により、何千もの接続を効率的に処理するため、トラフィック量の多い Web サイトやリアルタイム アプリケーションに最適です。ただし、その可能性を最大限に引き出すには、適切な構成が重要です。

重要なポイント:

  • パフォーマンスの向上: ワーカー プロセスを調整し、圧縮を有効にして、リソースの使用量を削減し、応答を高速化します。
  • トラフィックの処理: 負荷分散を使用してトラフィックをサーバー間で分散し、高負荷に対して最適化します。
  • 安全な接続: バックエンド サーバーに過負荷をかけずにセキュリティを強化するために SSL 終了を構成します。
  • リアルタイム アプリ: リアルタイム プラットフォームでシームレスな通信を実現するために WebSocket サポートを設定します。
  • 効果的な監視: Prometheus や Grafana などのツールを使用して、サーバーの健全性とパフォーマンスを追跡します。

クイックセットアップの例:

  • ワーカープロセス: CPUコアに合わせる(ワーカープロセス 4;).
  • 圧縮: Gzipを有効にする(gzip オン; gzip_comp_level 6;).
  • キャッシング: 速度を上げるためにプロキシキャッシュを設定する(proxy_cache_path /var/cache/nginx;).
  • 負荷分散: ラウンドロビンまたは最小接続でトラフィックを分散します。

プロのヒント: サーバーのスムーズな稼働を維持するために、定期的に設定を監視して微調整してください。トラフィックの多い Web サイト、静的コンテンツ、リアルタイム アプリのいずれを管理する場合でも、これらの構成が大きな違いを生む可能性があります。

NGINX オープンソースと NGINX Plus のパフォーマンス チューニング

NGINX

主要な Nginx 構成ファイルと設定

Nginx サーバーを最大限に活用するには、まず構成ファイルを理解し、主要な設定を微調整することから始めます。ここでは、知っておく必要のある内容について説明します。

Nginx 設定ファイルの理解

Nginx 設定は、次の 2 つの主要な領域に分類されます。

  • グローバル設定: 見つかった場所 nginx.conf は、
  • サイト固有の設定: 所在地 /etc/nginx/sites-available/

変更を適用する前に、設定をテストしてください。 nginx -t エラーがないことを確認するためです。

ワーカープロセスと接続の調整

ワーカー プロセスと接続は、サーバーのパフォーマンスに大きな役割を果たします。以下は、これらを設定するための簡単なガイドです。

設定 説明 サンプル値
ワーカープロセス ワーカープロセスの数 CPUコアに一致
ワーカー接続 ワーカーあたりの最大接続数 1024~2048年
キープアライブタイムアウト 接続タイムアウト 65秒

ヒント: サーバーのハードウェアに応じてこれらの値を調整します。

たとえば、サーバーに 4 つの CPU コアがある場合、構成は次のようになります。

ワーカープロセス 4; イベント { ワーカー接続 1024; } 

ワーカー プロセスを最適化した後、圧縮とキャッシュを有効にすることでパフォーマンスをさらに向上できます。

Gzip 圧縮とキャッシュの使用

圧縮とキャッシュは帯域幅を削減し、読み込み時間を短縮するのに役立ちます。設定方法は次のとおりです。

Gzip 圧縮を有効にする:

gzip オン; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript; 

キャッシュを設定する:

proxy_cache_path /var/cache/nginx レベル=1:2 キー_ゾーン=one:10m 非アクティブ=60m; proxy_cache one; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 

プロキシキャッシュパス ディレクティブは、頻繁にアクセスされるコンテンツのキャッシュゾーンを作成し、バックエンドの負荷を軽減します。 オープンファイルキャッシュ 頻繁にアクセスされるファイルをメモリに保存し、ディスク使用量を削減します。

負荷分散と SSL の高度なテクニック

これらの技術は、ワーカー プロセスの最適化とキャッシュを基盤として、トラフィックの分散とセキュリティの向上に重点を置いています。

負荷分散の設定

Nginx は、受信トラフィックを複数のサーバーに分散するための強力なツールを提供します。基本的な構成は次のとおりです。

アップストリームバックエンド { # デフォルト: バランスの取れた分散のためのラウンドロビン server localhost:8080; server localhost:8081; server localhost:8082; # 最小接続の場合はコメント解除 (不均一なワークロードに適しています) # least_conn; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 
  • ラウンドロビン 同様の応答時間を持つサーバーに最適です。
  • 最小接続 リクエストの複雑さが変化する場合に効果的に機能し、低速サーバーの過負荷を回避するのに役立ちます。
  • セッションの永続性のために、 IPハッシュ ユーザーを一貫して同じサーバーにルーティングします。

SSL終了の設定

SSLターミネーションは暗号化タスクをNginxに移行し、バックエンドサーバーの負荷を軽減します。Bobcaresの調査によると、SSLハンドシェイクのレイテンシを最大50%削減できるとされています。

SSL ターミネーションと負荷分散を組み合わせる方法は次のとおりです。

http { アップストリーム バックエンド { サーバー localhost:8080; サーバー localhost:8081; } サーバー { listen 443 ssl; サーバー名 example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private/key.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; 場所 / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } 

重要なSSLのヒント:

  • 固執する TLS 1.2 および 1.3 セキュリティ強化のため。
  • より強力な暗号化のためにサーバー側の暗号を優先します。
  • パフォーマンスを向上させるには、セッション キャッシュを有効にします。

特定のニーズに合わせた Nginx のカスタマイズ

トラフィックの多いウェブサイト向けに Nginx を最適化する

トラフィック量の多い Web サイトの場合、負荷を効果的に処理するには、Nginx の設定を微調整する必要があります。主要なパラメータを調整すると、サーバーの応答性と全体的なパフォーマンスが大幅に向上します。

バッファサイズの調整

http { クライアント本体バッファサイズ 16k; クライアントヘッダーバッファサイズ 4k; クライアント最大本体サイズ 8m; ラージクライアントヘッダーバッファ 4 8k; } 

これらの設定は、ディスクI/Oよりもメモリの使用を優先し、リクエストの処理を高速化します。たとえば、 クライアント本体バッファサイズ リクエスト中の一時ファイル書き込みの必要性を減らします。

効率的なログ管理

http { access_log /var/log/nginx/access.log 結合バッファ=32k フラッシュ=5秒; error_log /var/log/nginx/error.log 警告; } 

32 KB のバッファと 5 秒のフラッシュ間隔を使用すると、ログを正確かつ最新の状態に保ちながらディスク操作を最小限に抑えることができます。

タイムアウト設定

http { クライアント本体タイムアウト 12; クライアントヘッダータイムアウト 12; 送信タイムアウト 10; } 

これらのタイムアウト値は、低速クライアントがサーバーのリソースを不必要に消費するのを防ぐのに役立ちます。

これらの調整が完了すると、WebSocket などの継続的な通信を必要とするアプリケーションに合わせて Nginx をカスタマイズすることもできます。

WebSocket サポートのための Nginx の設定

WebSocket はリアルタイム アプリケーションの重要なコンポーネントです。WebSocket 接続を処理するように Nginx を適切に設定すると、負荷がかかってもスムーズなパフォーマンスが保証されます。

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name example.com; location /websocket { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # WebSocket 接続のタイムアウト設定 proxy_read_timeout 300s; proxy_send_timeout 300s; } } 

主要な WebSocket 構成の詳細:

指令 目的
プロキシhttpバージョン WebSocketサポートのためにHTTP/1.1を有効にする
プロキシ読み取りタイムアウト データパケット間の最大時間を設定します
プロキシ送信タイムアウト データ送信の最大時間を定義します
プロキシキャッシュバイパス WebSocketトラフィックのキャッシュを無効にする

地図 ディレクティブは接続のアップグレードを効率的に管理し、スムーズな WebSocket 通信を保証します。

不正使用を防ぐために、WebSocket 接続にレート制限を適用できます。

http { limit_req_zone $binary_remote_addr zone=websocket_limit:10m rate=5r/s; location /websocket { limit_req zone=websocket_limit burnt=20 nodelay; # ... 残りの WebSocket 構成 } } 

この設定により、IP は 1 秒あたり 5 件のリクエストと 20 件のリクエストバーストに制限され、サービスの可用性を維持しながら DoS 攻撃から保護されます。

Nginx のパフォーマンスと監視のベスト プラクティス

初期設定を超えて、Nginx 構成を最適化しておくことで、変化するワークロードを効果的に処理できるようになります。

重点的に取り組むべき分野

Nginx のパフォーマンスを向上させるには、サーバーの動作効率に直接影響する特定の設定を微調整する必要があります。

ワーカープロセスの管理

ワーカー_rlimit_nofile ディレクティブはファイル記述子の管理に不可欠です。これにより、トラフィックが多い期間でも制限に達することなく、サーバーが複数の同時接続を処理できるようになります。

ワーカー_rlimit_nofile 65535; 

オープンファイルキャッシュの使用

オープン ファイル キャッシュは、頻繁にアクセスされるファイルのメタデータをキャッシュすることでディスク I/O を最小限に抑え、静的コンテンツの配信を高速化します。

http { open_file_cache max=1000、非アクティブ=20秒; open_file_cache_valid 30秒; open_file_cache_min_uses 2; open_file_cache_errors オン; } 

これらの最適化が実施されると、継続的なパフォーマンスを確保し、さらに調整が必要な領域を見つけるために、定期的な監視が不可欠になります。

Nginx パフォーマンスの監視

監視は、サーバーのパフォーマンスを追跡し、ボトルネックや非効率性を明らかにするのに役立ちます。監視すべき主要な指標には、リクエスト率、エラー率、リソース使用量などがあります。Prometheus や Grafana などのツールを使用すると、このデータを簡単に収集して視覚化できます。

推奨 監視ツール

道具 目的 主要指標
プロメテウス ライブパフォーマンスデータを収集する リクエスト率、応答時間、エラー率
グラファナ パフォーマンスの傾向を視覚化する CPU使用率、メモリ消費量、トラフィックパターン
hトップ システムリソースの使用状況を追跡します プロセスの使用状況、メモリの割り当て

パフォーマンス メトリックの設定

次のように設定して、Nginx でステータス監視を有効にします。

場所 /nginx_status { stub_status オン; access_log オフ; 127.0.0.1 を許可; すべて拒否; } 

この設定により、次の点についての洞察が得られます。

  • アクティブな接続
  • 受け入れ可能な接続の合計
  • リクエスト処理統計
  • 読み取り、書き込み、接続の待機

ログを効果的に分析する

バッファ ログは、ログ書き込みをグループ化することでディスクの負担を軽減します。これにより、ログの精度を犠牲にすることなく、サーバーのパフォーマンスを維持できます。

「最適な結果を得るには、パフォーマンス データに基づく定期的な監視と調整が不可欠です。トラブルシューティングが複雑になる可能性があるため、一度に多くの変更を行わないようにすることが重要です。」

Nginx のホスティング オプション

適切なホスティング環境を選択することは、Nginx 構成を微調整することと同じくらい重要です。適切なプラットフォームを選択することで、最適化によって最良の結果が得られます。

の特徴 Serverion ホスティング

Serverion

Serverion は、Nginx 専用に設計されたホスティング プラットフォームを提供し、優れたパフォーマンスと信頼性を実現します。

ストレージとパフォーマンス
Serverion は Nginx 向けに最適化された SSD ストレージを使用し、I/O レイテンシを削減して構成ファイルとログへのアクセスを高速化します。

セキュリティインフラストラクチャ
Serverion は、エンタープライズ レベルの DDoS 保護により、Nginx のセキュリティを強化します。これにより、攻撃中の稼働時間が確保され、Nginx の負荷分散機能が補完されます。

リソースタイプ 仕様 Nginxのメリット
CPU Xeon クアッドコア ワーカープロセスを効率的に処理する
ラム 最大16GB キャッシュパフォーマンスを向上
ストレージ SSDベース ファイルアクセスを高速化
帯域幅 大容量 信頼性の高い負荷分散をサポート

スケーラブルなインフラストラクチャ
Serverion のプランは、増大するトラフィック ニーズに適応するように設計されています。これにより、Nginx セットアップはパフォーマンスを低下させることなく、増大する需要に対応できるようになります。

「Nginx をホストする場合、定期的な監視とパフォーマンスの最適化が不可欠です。適切なホスティング環境では、最適なサーバー パフォーマンスを維持するために必要なリソースとツールの両方が提供されるはずです。」

専門家によるサポート
Serverion の 24 時間 365 日のサポート チームには、お客様のニーズに合わせた構成の調整やパフォーマンス チューニングを支援できる Nginx スペシャリストが含まれています。

結論と最後のヒント

要点の要約

Nginx を最大限に活用するには、明確で段階的なアプローチに重点を置く必要があります。まず、サーバーのハードウェア制限とトラフィック パターンを理解します。そこから、ワーカー プロセス、キャッシュ、負荷分散などの設定を微調整して、サーバーがスムーズかつ効率的に実行されるようにします。

始めるための手順

  1. 構成の検証: 変更をライブで実行する前に、 nginx -t 設定にエラーがないか確認します。
  2. コアの最適化:
    • マッチ ワーカープロセス サーバーのCPUコア(例: ワーカープロセス 4 (4 コア サーバーの場合)。
    • gzip 圧縮を有効にすると、ファイル サイズが 50 ~ 70% 縮小されます。
    • リクエストをより効率的に処理するためにバッファ サイズを調整します。
  3. 高度な機能:
    • 接続を保護するために SSL 終了を設定します。
    • 適切な有効期限設定でコンテンツ キャッシュを構成します。
    • トラフィック パターンに合わせて調整された負荷分散を使用します。
    • パフォーマンスを監視するには、Prometheus や Grafana などのツールをインストールします。

パフォーマンス監視: サーバーのパフォーマンスを監視することが重要です。リクエスト率、応答時間、リソース使用量などの指標を追跡して、ユーザーに影響が出る前に問題を検出します。

「Nginx をホストする場合、定期的な監視とパフォーマンスの最適化が不可欠です。構成設定と監視ツールを適切に組み合わせることで、長期間にわたって最適なサーバー パフォーマンスが保証されます。」

よくある質問

ここでは、トラブルシューティングとパフォーマンスの向上に役立つ、Nginx 構成に関するよくある質問への回答を示します。

Nginx がキャッシュしているかどうかを確認するにはどうすればよいですか?

Nginx がコンテンツをキャッシュしているかどうかを確認するには、HTTP 応答ヘッダーを調べます。次の項目を探します。

  • Xキャッシュ: 「HIT」値はコンテンツがキャッシュされていることを意味します。
  • X-キャッシュステータス: 現在のキャッシュ状態を示します。

ヘッダーを表示するには、次のコマンドを使用できます。

curl -I https://yourwebsite.com 

注記: これらのヘッダーが Nginx セットアップで設定されていることを確認してください。設定されていない場合、応答に表示されません。

バッファを効率的に設定するための構成例を次に示します。

client_body_buffer_size 10K; client_header_buffer_size 1K; client_max_body_size 8m; large_client_header_buffers 4 4k; 

WebSocket サポートを有効にするにはどうすればいいですか?

WebSocketサポートを有効にするには、 プロキシパス ディレクティブは WebSocket バックエンド サーバーを指します。詳細な手順については、前の WebSocket 構成のセクションを参照してください。

SSL を安全に構成するにはどうすればよいですか?

SSL を安全に設定するには、次の構成を使用します。

サーバー { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } 

高トラフィック向けに Nginx を最適化するにはどうすればよいでしょうか?

トラフィック量の多い Web サイトの場合は、次の主要領域に重点を置きます。

  • マッチ ワーカープロセス CPUコアの数を増やして ワーカー接続 より多くの接続を処理するため。
  • サーバーの負荷を軽減するために効果的なキャッシュを設定します。
  • バッファ サイズを調整して、リクエストをより効率的に処理します。

「Nginx をホストする場合、定期的な監視とパフォーマンスの最適化が不可欠です。構成設定と監視ツールを適切に組み合わせることで、長期間にわたって最適なサーバー パフォーマンスが保証されます。」

関連ブログ投稿

ja