关于nginx并发连接能力优化(epoll模式、TIME_WAIT告警及长连接、worker_connections)
关于nginx并发连接能力优化(epoll模式、TIME_WAIT告警及长连接、worker_connections)
标签:nginx并发,nginx连接数,epoll模式,TIME_WAIT告警,长连接,ng优化,ESTABLISHED,worker_connections,OTHERSTATE 发布时间:2018-12-21
一、前言
nginx服务器老是报告TIME_WAIT 告警, ESTABLISHED 告警,检查nginx配置和系统网络配置发现现有的配置并发能力太弱,无法满足现有的并发请求的需求。
二、解决方法
1. 改进方法
![]() 1
2
3
4
|
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等参进行调优,如下所示
原配置
![]() 1
2
3
|
events { worker_connections 1024; } |
优化为
![]() 1
2
3
4
5
6
|
events { use epoll; #支持大量连接和非活动连接 worker_connections 32768; multi_accept on; #nginx在已经得到一个新连接的通知时,接收尽可能多的连接 accept_mutex on; #防止惊群现象发生,默认为on } |
优化说明
![]() 1
|
使用epoll模式,将连接从现在的2048增加到32768,Epoll模式将提高并发连接到100K级别, 而且非活跃的连接(连接正常但没有数据或死的连接对象)数量不影响活跃连接的性能。 |
2.2 upstream中使用keepalive,如下
![]() 1
2
3
4
5
|
upstream httpproxy{ server 192.168.1.14:8080; server 192.168.1.15:8080; keepalive 128; } |
2.3 系统优化
![]() 1
2
3
4
5
6
7
8
9
10
11
12
|
[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 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库