一.NGINX最佳化配置
1.主設定檔最佳化:
# vi /usr/local/nginx/conf/nginx.conf
-----------------------------------------
user nginx nginx;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 204800;
events
{
use epoll;
worker_connections 204800;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 20m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;
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/css application/xml;
gzip_vary on;
}
-----------------------------------------
注:部分配置詳解:
worker_processes 8;
nginx進程數,建議按照cpu數目來指定,一般為它的倍數。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000
10000000;
為每個進程分配cpu,上例中將8個進程分配到8個cpu,當然可以寫多個,或者將一個進程分配到多個cpu
。
worker_rlimit_nofile 204800;
這個指令是指當一個nginx進程開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n
)與nginx進程數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n的值保持一致。
注:這裡需要設定 ulimit -SHn 204800
use epoll;
使用epoll的I/O模型,這個不用說了吧。
worker_connections 204800;
每個進程允許的最多串連數,理論上每台nginx伺服器的最大串連數為
worker_processes*worker_connections。
keepalive_timeout 60;
keepalive逾時時間。
client_header_buffer_size 4k;
用戶端要求標頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般一個請求的頭部大小不會
超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getconf
PAGESIZE取得。
open_file_cache max=102400 inactive=20s;
這個將為開啟檔案指定緩衝,預設是沒有啟用的,max指定緩衝數量,建議和開啟檔案數一致,inactive
是指經過多長時間檔案沒被請求後刪除緩衝。
open_file_cache_valid 30s;
這個是指多長時間檢查一次緩衝的有效資訊。
open_file_cache_min_uses 1;
open_file_cache指令中的inactive參數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一
直是在緩衝中開啟的,如上例,如果有一個檔案在inactive時間內一次沒被使用,它將被移除。