NGINXサーバのチューニングは、パフォーマンス向上・高負荷対応・安定性向上を目的に行います。以下に、主なチューニング項目とその理由・方法を紹介します。
✅ 1. worker設定の最適化1-1. worker_processesworker_processes auto;
1-2. worker_connectionsworker_connections 10240;
✅ 2. keepalive設定の調整keepalive_timeout
keepalive_timeout 15;
✅ 3. ファイルディスクリプタの調整worker_rlimit_nofile
worker_rlimit_nofile 65535;
✅ 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;
✅ 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. モジュールや構成の見直し
✅ 確認・計測ツール| ツール | 用途 |
|---|
nginx -t | 設定チェック | nginx -V | ビルド情報確認 | ab, wrk | 負荷テスト | top, iotop, netstat, ss | リソース確認 | access.log, error.log | 不具合確認 |
✅ まとめ| 項目 | 目的 |
|---|
| worker設定 | 高負荷対応 | | keepalive | 接続コスト削減 | | Gzip・キャッシュ | 帯域削減・レスポンス高速化 | | バッファ調整 | エラー防止 | | レート制限 | 不正アクセス防止 | | SSL最適化 | HTTPSのパフォーマンス向上 | | ログ調整 | I/O負荷軽減 |
状況に応じて「どこにボトルネックがあるか(CPU、I/O、ネットワーク)」を確認して、重点的にチューニングするのが最も効果的です。 |
この記事へのコメント