Nginx配置优化参考
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
参考配置
et.ipv4.ip_local_port_range = 1024 65000
[ 编辑本段 ] [ 回目录 ]3、 其它sysctl.conf配置
修改文件
/etc/sysctl.conf
参考配置
et.core.somaxconn = 2048
et.ipv4.tcp_syncookies = 1
et.ipv4.tcp_tw_reuse = 1
et.ipv4.tcp_tw_recycle = 1
et.ipv4.tcp_timestamps = 0
et.ipv4.tcp_fin_timeout = 15
et.ipv4.tcp_max_tw_buckets = 10000
et.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 102400 #与nofile保持一致
et.ipv4.tcp_mem = 1048576 1310720 1572864
et.ipv4.tcp_rmem = 4096 87380 16777216
et.ipv4.tcp_wmem = 4096 87380 16777216
et.core.rmem_max = 16777216
et.core.wmem_max = 16777216
et.ipv4.tcp_synack_retries = 3
et.ipv4.tcp_syn_retries = 3
et.ipv4.tcp_max_syn_backlog=8192
使用/sbin/sysctl -p来做配置刷新 [ 编辑本段 ] [ 回目录 ]4、 worker_processe
Nginx工作进程数,经过测试以及官方的建议最好配置为与CPU核数目相等,或者auto。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/ngx_core_module.html#worker_processe
参考配置
worker_processes 8
[ 编辑本段 ] [ 回目录 ]5、 worker_cpu_affinity
绑定Nginx工作进程到CPU核,可以使CPU负载更加均衡稳定。配置值与worker_processes以及CPU核数目有关。配置1对应绑定的核。
修改文件
ginx.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一致。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile
参考配置
worker_rlimit_nofile 102400
[ 编辑本段 ] [ 回目录 ]7、 worker_connectio
Nginx工作进程能同时打开的链接数目,建议与worker_rlimit_nofile一致。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/ngx_core_module.html#worker_connectio
参考配置
worker_connections 102400
[ 编辑本段 ] [ 回目录 ]8、 access_log
Nginx访问日志,一般情况下建议关闭,如果不能关闭就配置缓存可以大幅度提升IO性能。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
参考配置
access_log off; access_log /pathto/access.log main buffer=128k flush=2m; [ 编辑本段 ] [ 回目录 ]9、 keepalive
Nginx作为反向代理服务器时,upstream设置keepalive可以大幅度提升代理性能。如果是HTTP服务需要同时配置upstream和location。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
参考配置
upstream http_backend {
erver 127.0.0.1:8080
keepalive 32
}
erver {
...
location /http/ {
roxy_pass http://http_backend
roxy_http_version 1.1
roxy_set_header Connection ""
...
}
}
[ 编辑本段 ] [ 回目录 ]10、 hash consistent
Nginx反向代理的服务需要会话保持功能,在real-server个数变化的时候影响尽可能小,可以配置一致性哈希。
修改文件
ginx.conf
官方说明
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash
参考配置
upstream ngx-backend-normal {
erver 10.151.161.130:8080
erver 10.151.161.131:8080
keepalive 32
hash $remote_addr consistent
}