nginxサーバのチューニング方法

kirill-sh-eVWWr6nmDf8-unsplash.jpg

質問

nginxサーバのチューニング方法を挙げてください。


解答

NGINXサーバのチューニングは、パフォーマンス向上・高負荷対応・安定性向上を目的に行います。以下に、主なチューニング項目とその理由・方法を紹介します。


✅ 1. worker設定の最適化

1-1. worker_processes

  • サーバのCPUコア数に合わせて設定

worker_processes auto;
  • autoなら自動でCPU数に応じて設定される

1-2. worker_connections

  • 1プロセスあたりの最大同時接続数

worker_connections 10240;
  • 総接続数 = worker_processes × worker_connections


✅ 2. keepalive設定の調整

keepalive_timeout

  • クライアントとの接続を保持する秒数(秒)

keepalive_timeout 15;
  • 長すぎると接続を無駄に保持、短すぎると再接続コスト増 → バランスが重要


✅ 3. ファイルディスクリプタの調整

worker_rlimit_nofile

worker_rlimit_nofile 65535;
  • OS側で開けるファイル数(=同時接続の上限)を上げる

  • /etc/security/limits.conf なども併せて調整が必要


✅ 4. Gzip圧縮の活用

gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_min_length 1024;gzip_comp_level 5;
  • 帯域節約・レスポンス高速化に貢献

  • 動的コンテンツには適用しすぎないように注意


✅ 5. キャッシュの設定(静的ファイル)

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {    expires 30d;    access_log off;}
  • 静的ファイルに長いキャッシュ期限を付けると、再リクエストが減り負荷軽減


✅ 6. バッファサイズの調整

client_body_buffer_size 16k;client_max_body_size 10M;client_header_buffer_size 4k;large_client_header_buffers 4 8k;
  • POSTデータ、ヘッダーサイズが大きい場合に調整

  • 4xx/5xxエラーが出る場合は要注意


✅ 7. 接続制限・レート制限

limit_conn_zone $binary_remote_addr zone=addr:10m;limit_conn addr 20;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;limit_req zone=req_limit_per_ip burst=5;
  • DoS対策やリクエスト過多の抑制に有効


✅ 8. SSL設定の最適化(HTTPS使用時)

ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers 'HIGH:!aNULL:!MD5';
  • セッションキャッシュでSSLの高速再利用を可能に

  • TLSバージョンや暗号スイートの調整も重要


✅ 9. ログの最適化

  • アクセスログが多いとディスクI/O負荷が増加

  • 必要な情報のみに限定・ログレベルを調整

access_log /var/log/nginx/access.log main buffer=32k flush=1m;

✅ 10. モジュールや構成の見直し

  • 不要な機能やリバースプロキシ先の調整

  • HTTP/2の有効化(http2キーワード)

  • FastCGIキャッシュやproxy_cacheの活用(動的コンテンツの高速化)


✅ 確認・計測ツール

ツール用途
nginx -t設定チェック
nginx -Vビルド情報確認
ab, wrk負荷テスト
top, iotop, netstat, ssリソース確認
access.log, error.log不具合確認

✅ まとめ

項目目的
worker設定高負荷対応
keepalive接続コスト削減
Gzip・キャッシュ帯域削減・レスポンス高速化
バッファ調整エラー防止
レート制限不正アクセス防止
SSL最適化HTTPSのパフォーマンス向上
ログ調整I/O負荷軽減

状況に応じて「どこにボトルネックがあるか(CPU、I/O、ネットワーク)」を確認して、重点的にチューニングするのが最も効果的です。





Nginx ポケットリファレンス【電子書籍】[ 鶴長鎮一 ]

価格:3058円
(2025/6/10 11:41時点)
感想(0件)


【沖縄・離島配送不可】【代引不可】グラフィックボード NVIDIA GeForce GT730 ファンレスモデル 2GB ASUSTeK COMPUTER ASU-GT730-4H-SL-2GD5

価格:15476円
(2025/2/1 00:13時点)
感想(0件)


 



この記事へのコメント