Nginx合集-并发连接能力优化

Nginx合集-并发连接能力优化

经验文章nimo972025-07-06 15:14:401A+A-

一、前言

nginx服务器老是报告TIME_WAIT 告警, ESTABLISHED 告警,检查nginx配置和系统网络配置发现现有的配置并发能力太弱,无法满足现有的并发请求的需求。

二、解决方法

改进方法

a、使用epoll模式,增加并发连接数,增加nginx系统并发连接能力。
b、后端使用长连接, 提高端口利用率,减少TIME_WAIT状态比例, 使系统可以允许更多的TIME_WAIT.
c、优化tcp连接工作模式,减少FIN2_WAIT状态比例 (对应监控中的OTHERSTATE)。
d、合理的设置监控参数

2. 配置操作

2.1 打开nginx/conf/nginx.conf

配置文件,对其中events的worker_connections、multi_accept、accept_mutex等参进行调优,如下所示

原配置

events {
worker_connections 1024;
}
优化为


events {
use epoll; #支持大量连接和非活动连接
worker_connections 20000;
multi_accept on; #nginx在已经得到一个新连接的通知时,接收尽可能多的连接
accept_mutex on; #防止惊群现象发生,默认为on
}


优化说明

使用epoll模式,将连接从现在的2048增加到32768,Epoll模式将提高并发连接到100K级别, 而且非活跃的连接(连接正常但没有数据或死的连接对象)数量不影响活跃连接的性能。

2.2 upstream中使用keepalive

如下

upstream httpproxy{
server 192.168.1.14:8080;
server 192.168.1.15:8080;
keepalive 128;
}

2.3 系统优化

[root@CsadfZ999739 nginx]# vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 20
#
net.ipv4.tcp_keepalive_time =300 # 5分钟发个激活包,应对移动端, 现在不需要,因为有F5

fs.file-max = 163840 #增加文件数

net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

:wq
[root@CsadfZ999739 nginx]#/sbin/sysctl

#监控参数设置
ESTABLISHED: 连接数 2万
TIME_WAIT: 只监控nginx与后端服务器连接部分 5000 全部的端口>2万
OTHERSTATE: 5000

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7