ホームページ >運用・保守 >Linuxの運用と保守 >nginx の高同時実行構成パラメーターの詳細な説明
1. 一般的に、nginx 設定ファイル内の次の項目は最適化に効果的です:
1. work_processes 8;
nginx プロセス番号 (通常はその倍数) を指定することをお勧めします。例: 2 クアッドコア CPU は 8 としてカウントされます)。
2.worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000;
上記の例では、8 つのプロセスが 8 つの CPU に割り当てられます。複数記述したり、1つの
プロセスを複数のCPUに割り当てたりすることができます。
3.worker_rlimit_nofile65535;
このコマンドは、nginx プロセスによって開かれるファイル記述子の最大数を指します。理論値は、開いているファイルの最大数 (ulimit -n) を nginx プロセスの数で割ったものです。 nginx の割り当てリクエストは均一ではないため、ulimit -n の値と一致させる方が良いでしょう。
これは、nginx のスケジューリング時のプロセスへのリクエストの割り当てがあまりバランスが取れていないためです。そのため、10240 を入力し、合計同時実行数が 30,000 ~ 40,000 に達すると、プロセス数が 10240 を超える可能性があり、502 エラーが返されます。
を選択し、Poll は標準イベントに属します現在のシステムにこれより効率的な方法がない場合、nginx は選択またはポーリングを選択します。B) 効率的なイベント モデル。FreeBSD 4.1 以降、OpenBSD 2.9 以降、および MacOS X で使用されます。デュアル MacOS X を使用します。 kqueue を使用するプロセッサはカーネル パニックを引き起こす可能性があります。
Epoll: Linux カーネル バージョン 2.6 以降のシステムで使用されます。
/dev/poll: Solaris 7 11/99+、HP/UX 11.22+(eventport)、IRIX 6.5.15+、および Tru64 UNIX 5.1A+ で使用されます。
Eventport: Solaris 10 で使用されます。カーネルのクラッシュを防ぐために、セキュリティ パッチをインストールする必要があります。
ユーザー ファイル ハンドルに関連付けられていない、システム内の TCP ソケットの最大数。この数を超えると、孤立接続は直ちにリセットされ、警告メッセージが出力されます。この制限は、単純な DoS 攻撃を防ぐためだけのものです。この値に依存しすぎたり、この値を人為的に減らしたりすることはできません (メモリを増やす場合)。
net.ipv4.tcp_max_syn_backlog = 262144
クライアント確認情報をまだ受信していない、記録された接続要求の最大数。 128M のメモリを備えたシステムの場合、デフォルト値は 1024 で、メモリが小さいシステムの場合、デフォルト値は 128 です。
net.ipv4.tcp_timestamps = 0
タイムスタンプはシーケンス番号の折り返しを回避できます。 1Gbps リンクでは、以前に使用されたシーケンス番号が必ず発生します。タイムスタンプにより、カーネルはそのような「異常な」パケットを受け入れることができます。ここでオフにする必要があります。
net.ipv4.tcp_synack_retries = 1
ピアへの接続を開くには、カーネルは前の SYN に対する応答として ACK を含む SYN を送信する必要があります。これは、いわゆる 3 ウェイ ハンドシェイクにおける 2 回目のハンドシェイクです。この設定は、カーネルが接続を放棄する前に送信される SYN+ACK パケットの数を決定します。
net.ipv4.tcp_syn_retries = 1
カーネルが接続の確立を断念する前に送信される SYN パケットの数。
net.ipv4.tcp_fin_timeout = 1
ローカルエンドによってソケットが閉じるように要求された場合、このパラメータはソケットが FIN-WAIT-2 状態に留まる時間を決定します。ピアがエラーを起こして接続を閉じなかったり、予期せずクラッシュしたりする可能性があります。デフォルト値は 60 秒です。 2.2 カーネルの通常の値は 180 秒です。 3 この設定を押すことはできますが、マシンの負荷が低い Web サーバーであっても、多数のデッド ソケットによるメモリ オーバーフローの危険性があることに注意してください。 WAIT-2 は、メモリを最大 1.5K しか消費できないため、FIN-WAIT-1 よりも危険性は低くなりますが、寿命は長くなります。
net.ipv4.tcp_keepalive_time = 30
キープアライブが有効な場合、TCP がキープアライブ メッセージを送信する頻度。デフォルトは 2 時間です。
3. 完全なカーネル最適化設定は以下に掲載されています:
vi /etc/sysctl.conf CentOS5.5 では、すべての内容をクリアして次の内容に直接置き換えることができます:
net.ipv4.ip_forward = 0
net.ipv4 .conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_window_scal ing = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net .ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216 core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack _retries = 1
ネット .ipv4.tcp_syn_retries = 1
net.ipv4 .tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keep生きている時間 = 30
net.ipv4.ip_local_port_range = 1024 65000
使用 構成をすぐに有効にするには、次のコマンドを使用できます:
4. 以下は、システム接続数の最適化についてです。
開いているファイルとデフォルト値Linux の最大ユーザー プロセスは 1024 です
#ulimit -n
1024
#ulimit –u
1024
問題の説明: サーバーは同時に 1024 個のファイルしか開くことができず、1024 個のユーザー プロセスを処理します
現在のシステムのすべての制限値を表示するには ulimit -a を使用し、現在開いているファイルの最大数を表示するには ulimit -n を使用します。
新しくインストールされた Linux には、デフォルトでは 1024 しかありません。負荷の高いサーバーとして使用すると、開いているファイルが多すぎるというエラーが発生しやすくなります。したがって、それを大きくする必要があります。
解決策:
ulimit –n 65535 を使用してすぐに変更しますが、再起動すると無効になります。 (ulimit -SHn 65535 は ulimit-n 65535 と同等で、-S はソフトを指し、-H はハードを指します)
3 つの変更方法があります:
1 に ulimit -SHn 65535 の行を追加します。 etc/rc.local
2. /etc/profile に ulimit -SHn 65535 という行を追加します3. /etc/security/limits.conf の最後に次を追加します:
* Soft nofile 65535
*ソフト nproc 65535
* ハード nproc 65535
最初の方法は CentOS では効果がありません、3 番目の方法は効果があります、2 番目の方法は Debian では効果があります
# ulimit -n
65535
# ulimit -u
65535
注: ulimit コマンド自体にはソフト設定とハード設定があり、ハードの場合は -H を追加し、ソフトの場合は -S を追加します。デフォルトの表示はソフト リミットです
ソフト リミットは、現在のシステムで有効な設定。ハード制限値は、一般のユーザーが下げることができます。しかし、それを増やすことはできません。ソフト リミットはハード リミットより高く設定することはできません。 root ユーザーのみがハード制限値を増やすことができます。
5. 以下は簡単な nginx 設定ファイルです:
ユーザー www www;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 0001000000100000
01000000;
error_log /www/log/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 204800;
イベント
{
epoll を使用;
worker_connections 204800;
}
http
{
mime.types を含む;
default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
fastcgi_cache_path /usr/local/nginx/fastcgi_cache tables=1:2
keys_zone=TEST:10m
inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_temp_file_write_size 8k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid 任意の 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale エラー タイムアウト valid_headerhttp_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nolay オン;
gzip オン;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x -javascript text/cssapplication/xml;
gzip_vary on;
server
{
listen 8080;
server_namebackup.aiju.com;
indexindex.phpindex.htm;
root /www/html/;
location /status
{
stub_status on;
}
location ~ .*.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php;
include fcgi.conf;
}
location ~ .*. (gif|jpg|jpeg|png|bmp|swf|js|css)$
{
有効期限 30 日;
}
log_format アクセス '$remote_addr -- $remote_user [$time_local]"$request" '
'$status $ body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /www/log/access.log access;
}
}
六、FastCGIに関する几个命令:
fastcgi_cache_path /usr/local /nginx/fastcgi_cachelevels=1:2keys_zone=TEST:10minactive=5m;
この命令は、FastCGI が指定する経路、構造等のキー領域の保存時間と非アクティブ化の削除時間を指定します。 _timeout 300;
指定
fastcgi_send_timeout 300;
FastCGI への送信要求の超過時間。この値は、2 回のハンドが完了した後の FastCGI への送信要求の超過時間を意味します。
fastcgi_read_timeout 300;
受信收
fastcgi_buffer_size 4k;
FastCGI 応答の最初の部分を取得するためには、複数の大きなバッファー セクションが必要であり、一般に最初の部分が必要です。应答不会
fastcgi_buffers 8 4k;
は、FastCGI を実行するために実際に必要なバッファ領域を指定します。
この命令我也
fastcgi_temp_file_write_size 8k;
fastcgi_temp_path の書き込み時に使用されるデータ ブロックは、fastcgi_buffers の 2 倍です。 fastcgi_cache テスト
FastCGI キャッシュは非常に便利で、CPU 負荷を軽減し、502 ブロックを防ぐ効果があると考えられています。 id 301 1d;
fastcgi_cache_valid any 1m;は指定されたもの応答コードは保持時間を指定します。上の例では、200、302 応答は 1 時間、301 応答は 10 分、その他は 1 分です。内の最少使用回数、たとえば、5 分間に特定のファイルが 1 回も使用されなかった場合、そのファイルは削除されます。種類の上記はnginxの中のFastCGI関連のパラメータであり、さらに、FastCGI自体にもいくつかの設定を変更する必要があります。php-fpmを使用してFastCGIを管理する場合は、設定ファイル内の以下の値を変更できます:
以上がnginx の高同時実行構成パラメーターの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。