1. 程式人生 > >Nginx配置優化參考

Nginx配置優化參考

val time 反向代理服務器 ngx php sof wid io性能 web服務

Nginx配置優化參考

編輯詞條



摘要:本文檔描述了Nginx性能測試過程中,發現的可優化性能的配置項。主要包含系統參數,以及Nginx本身配置。本文可以作為後續上線以及維護過程中的參考文檔。 1、 nofile 系統打開的文件數約束。 Linux服務器必須修改這個值才能滿足Nginx的要求。建議修改為102400或者更大。 修改文件 /etc/security/limits.conf 默認值 1024 參考配置 * soft nofile 102400 * hard nofile 102400 2、 net.ipv4.ip_local_port_range 本地端口使用範圍,在Ng


目錄
  • 1、 nofile
  • 2、 net.ipv4.ip_local_port_range
  • 3、 其它sysctl.conf配置
  • 4、 worker_processes
  • 5、 worker_cpu_affinity

[顯示全部]


本文檔描述了Nginx性能測試過程中,發現的可優化性能的配置項。主要包含系統參數,以及Nginx本身配置。本文可以作為後續上線以及維護過程中的參考文檔。

[ 編輯本段 ] [ 回目錄 ]1、 nofile

系統打開的文件數約束。 Linux服務器必須修改這個值才能滿足Nginx的要求。建議修改為102400或者更大。

修改文件

/etc/security/limits.conf

默認值

1024

參考配置

* soft nofile 102400

* hard nofile 102400

[ 編輯本段 ] [ 回目錄 ]2、 net.ipv4.ip_local_port_range

本地端口使用範圍,在Nginx作為web服務器時這個參數可以忽略,但作為反向代理服務器必須修改為更大範圍,高並發時可以大幅度提升Nginx性能。

修改文件

/etc/sysctl.conf

默認值

32768 61000

參考配置

net.ipv4.ip_local_port_range = 1024 65000

[ 編輯本段 ] [ 回目錄 ]3、 其它sysctl.conf配置

修改文件

/etc/sysctl.conf

參考配置

net.core.somaxconn = 2048

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_fin_timeout = 15

net.ipv4.tcp_max_tw_buckets = 10000

net.ipv4.ip_local_port_range = 1024 65000

fs.file-max = 102400 #與nofile保持一致

net.ipv4.tcp_mem = 1048576 1310720 1572864

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 87380 16777216

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_synack_retries = 3

net.ipv4.tcp_syn_retries = 3

net.ipv4.tcp_max_syn_backlog=8192

使用/sbin/sysctl -p來做配置刷新
[ 編輯本段 ] [ 回目錄 ]4、 worker_processes

Nginx工作進程數,經過測試以及官方的建議最好配置為與CPU核數目相等,或者auto。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/ngx_core_module.html#worker_processes

參考配置

worker_processes 8;

[ 編輯本段 ] [ 回目錄 ]5、 worker_cpu_affinity

綁定Nginx工作進程到CPU核,可以使CPU負載更加均衡穩定。配置值與worker_processes以及CPU核數目有關。配置1對應綁定的核。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity

參考配置

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

[ 編輯本段 ] [ 回目錄 ]6、 worker_rlimit_nofile

Nginx工作進程能打開的文件句柄數目,建議與nofile一致。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile

參考配置

worker_rlimit_nofile 102400;

[ 編輯本段 ] [ 回目錄 ]7、 worker_connections

Nginx工作進程能同時打開的鏈接數目,建議與worker_rlimit_nofile一致。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/ngx_core_module.html#worker_connections

參考配置

worker_connections 102400;

[ 編輯本段 ] [ 回目錄 ]8、 access_log

Nginx訪問日誌,一般情況下建議關閉,如果不能關閉就配置緩存可以大幅度提升IO性能。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

參考配置

  1. access_log off;
  2. access_log /pathto/access.log main buffer=128k flush=2m;
[ 編輯本段 ] [ 回目錄 ]9、 keepalive

Nginx作為反向代理服務器時,upstream設置keepalive可以大幅度提升代理性能。如果是HTTP服務需要同時配置upstream和location。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

參考配置

upstream http_backend {

server 127.0.0.1:8080;

keepalive 32;

}

server {

...

location /http/ {

proxy_pass http://http_backend;

proxy_http_version 1.1;

proxy_set_header Connection "";

...

}

}

[ 編輯本段 ] [ 回目錄 ]10、 hash consistent

Nginx反向代理的服務需要會話保持功能,在real-server個數變化的時候影響盡可能小,可以配置一致性哈希。

修改文件

nginx.conf

官方說明

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash

參考配置

upstream ngx-backend-normal {

server 10.151.161.130:8080;

server 10.151.161.131:8080;

keepalive 32;

hash $remote_addr consistent;

}

Nginx配置優化參考