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