Nginx系列(十二)——高并发性能参数配置

可以使用一些常见的压测工具测试高并发性能情况,例如
ab,JMeter, Locust,Gatling

(一)配置长连接

http {
keepalive_requests 320;  
keepalive_timeout 300s;
...
}

#keepalive_requests,默认为100,在高并发情况下可以适当加大该值.例如web页面有很多小图片需要传输,就可以把该值加大,从而尽可能地在一个长连接里传输更多图片,否则需要多次建立连接才能传完,而多次建立连接会增加服务器负担.
#keepalive_timeout默认为75s,在需要上传大文件时,如果超时时间太短,会导致文件没有上传完,连接就自动断开了.该值过大的话,会导致空闲连接过多,占用服务器资源
(二)配置负载均衡存活时间

使用负载均衡时,也需要注意连接存活时间

proxy_http_version 1.1;
proxy_set_header Connection "";
upstream backend {
server 10.0.0.42;
server 10.0.2.56;
keepalive 32;
}

(三)代理缓存
这个主要用于解决client到server地网络质量较差等情况,即client发送的请求缓慢,导致server接收完请求地时间延长,增加服务器负载.当加了代理缓存后,Nginx会尽量将请求保存至代理中,当代理中地请求达到一定数量时再进行处理,因为Nginx和后台Server是内网络环境不存在网络过慢问题,从而加快处理速度.当请求过大时,还可以将请求先写到临时文件中.

server {
proxy_buffering on;  #开启代理缓存
proxy_buffer_size 8k;
proxy_buffers 8 32k; #缓冲数量和缓冲大小
proxy_busy_buffer_size 64k;
...
}

(四)缓冲请求日志

当系统负载高的时候,如果还频繁写日志会加剧负载压力.所以我们可以将日志先进行缓存,当达到指定大小时再写入磁盘

http {
access_log /var/log/nginx/access.log main buffer=32k flush=1m;
}

#当日志占满32k的内容时才写入磁盘中,flush用于指定日志数据在内存中最长的存留时间
(五)其他参数调优
调整系统参数
例如以下参数:
net.core.somaxconn   #内核中规定的tcp等地最大连接监听数
sys.fs.file_max       #最大文件描述符/etc/security/limits.conf
net.ipv4.ip_local_port_range   #端口范围
调整Nginx参数
例如以下参数
worker_processes
worker_connections
worker_rlimit_nofile
sendfile  #高效传输文件
gzip    #可以对静态文件进行压缩传输.大部分浏览器会支持自动解压gzip