Nginx 72万连接性能测试(一)
转自:http://my.oschina.net/chenzhuo/blog/150200?p=2#comments
根据系统内存64G估算单台tengine做反向代理最高支持72万连接。为了验证达到该连接数时系统稳定运行,进行压测,先验证nginx与client建立72万连接时性能(不转发)。
关闭超线程,12核CPU对应12个nginx worker进程,每个进程worker_connections为60000,且关闭accept_mutex。前端LVS做FNAT模式转发,开synproxy。
1. Client端建立连接数小于proxy上限
7个client,每个client 10个进程对应不同vip,每个进程建立并维持9000个idle连接。共63万并发连接。
|
最大并发连接 |
最大CPU利用率 |
最大内存占用 |
MaxTengineMem |
MaxSocketMem |
|
625.0K |
99.33% |
4.0G |
517M |
388M |



18:19:42:
如图,从18:19:42开始,Client端发起建立连接过程,CPU占用率提高,内存占用增加(1.4G-3.8G)
每个连接占用内存2.4G/630000 = 3.99KB(4KB)
18:19:51:
63W个连接建立完毕(CPS=7万),CPU占用率下降趋于0,内存稳定在3.8G。
18:20:42:
Tengine对client空闲TCP连接超时为60s,主动断开连接,出现TimeWait连接。同时Client端收到主动断链后,继续发起连接建立过程以便维持期望的连接数,CPU利用率增加,同时内存占用出现尖峰。
18:20:44:
TimeWait连接增加到180000,超过net.ipv4.tcp_max_tw_buckets = 180000,系统日志中出现:
18:20:44 xxx kernel: : [94657.274380] TCP: time wait bucket table overflow
18:20:52:
orphan sockets达到131110,超过net.ipv4.tcp_max_orphans = 131072,系统日志中报Out of socket memory
18:20:54 xxx kernel: : [94667.682404] Out of socket memory
18:20:54 xxx kernel: : [94667.682414] TCP: too many of orphaned sockets
2. Client端建立连接数超过proxy上限
7个client,每个client 10个进程对应不同vip,每个进程建立并维持11万个idle连接。共请求建立77万并发连接。
|
最大并发连接 |
最大CPU利用率 |
最大内存占用 |
MaxTengineMem |
MaxSocketMem |
|
720.0K |
99.42% |
4.4G |
517M |
388M |



17:01:52:
开始建立连接。
17:02:01:
72W个连接建立完毕(CPS=8万),由Nginx上限为72W,新建立的连接被主动断连,出现大量TimeWait状态连接(17:01:59开始),TimeWait连接达到180000已经超过了net.ipv4.tcp_max_tw_buckets = 180000,系统日志中出现:
17:02:01 slbv2test04.cm3 kernel: : [89937.009770] TCP: time wait bucket table overflow
17:02:01-17:02:13:
这13秒内,系统1分钟load由0.8迅速增加到4,tsar监控无数据。
这个过程,Client端与nginx建立连接,nginx达到72W上限,主动断开新建立连接,出现大量TimeWait状态连接,client达不到需要建立的连接数,继续键连接,于是达tw_buckets上限。
17:02:52:
Tengine对client空闲TCP连接超时为60s,主动断开连接,出现TimeWait连接。同时net.ipv4.tcp_tw_timeout = 60,之前的TimeWait连接也逐步减少。
需要评估的是:
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_timeout = 60
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 131072
这两个取值是否仍然安全。在client请求达到上限时,会带来大量负载,机器hang风险。
Nginx 72万连接性能测试(一)的更多相关文章
- 10.6 Nginx 高并发连接
Nginx 高并发连接 什么是IO,输入输出 Web服务器IO的整个详细过程 (1)客户发起请求到服务器网卡: (2)服务器网卡接受到请求后转交给内核 ...
- Nginx 限制并发连接和并发请求数配置
Nginx限制并发连接和并发请求数配置 by:授客 QQ:1033553122 测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...
- Nginx upstream 长连接
原文: http://bollaxu.iteye.com/blog/900424 Nginx upstream目前只有短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connecti ...
- Tomcat 长连接与短连接性能测试
环境: 操作系统:centos 6.5 x64 cpu:32 core 内存: 32G web服务器:tomcat 6.x jdk :1.6x 测试环境: 操作系统:centos 6.5 x64 c ...
- nginx 的限制连接模块limit_zone与limit_req_zone
转载于:http://storysky.blog.51cto.com/628458/642970/ nginx 上有两个限制连接的模块一个是 limit_zone 另一个是 limie_req_zon ...
- nginx tcp proxy 连接保持设置
根据前文Nginx tcp proxy module试用的设置,在测试环境中发现tcp连接经常掉线.在该项目站点上找到一个issue,也谈论这件事情,不过别人用在web socket协议上. 其实就是 ...
- nginx配置长连接
http { keepalive_timeout 20; --长连接timeout keepalive_requests 8192; --每个连接最大请求数 } events { worker_con ...
- nginx配置socket连接
author: headsen chen date: 2019-08-08 18:52:36 notice :个人原创 Nginx通过在客户端和后端服务器之间建立隧道来支持WebSockets通信 ...
- nginx配置长连接(ajax60秒请求超时)
个人博客 地址:http://www.wenhaofan.com/article/20180911150337 1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应 ...
随机推荐
- Reusable async validation for WPF with Prism 5
WPF has supported validation since the first release in .NET 3.0. That support is built into the bin ...
- 高可用保证消息绝对顺序消费的BROKER设计方案
转自: http://www.infoq.com/cn/articles/high-availability-broker-design?utm_source=tuicool&utm_medi ...
- FatJar in 创新实训 自然语言交流系统
Fat Jar Eclipse Plug-In是一个可以将Eclipse JavaProject的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是e ...
- 第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求
第三百二十七节,web爬虫讲解2—urllib库爬虫 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode(& ...
- AWT控件称为重量级控件
AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口. AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的 ...
- Git -- 远程仓库简介
到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...
- 转载: 让我们聊聊Erlang的nif中资源的安全释放
让我们聊聊Erlang的nif中资源的安全释放 http://my.oschina.net/u/236698/blog/479221
- MySQL库和表的管理
MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中performance_schema:服务器性能指标库mysql:记录用户 ...
- vs2013(vs2015) 打开vs2010 找不到此项目类型所基于的应用程序 MVC2 升级 MVC5 不能加载Web项目
Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3 Tools Update ASP.NET MVC 3 can be installed side ...
- 多目标线性规划求解方法及matlab实现
转载: https://blog.csdn.net/wzl1997/article/details/79120323