转自: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万连接性能测试(一)的更多相关文章

  1. 10.6 Nginx 高并发连接

    Nginx 高并发连接 什么是IO,输入输出      Web服务器IO的整个详细过程             (1)客户发起请求到服务器网卡:         (2)服务器网卡接受到请求后转交给内核 ...

  2. Nginx 限制并发连接和并发请求数配置

    Nginx限制并发连接和并发请求数配置   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...

  3. Nginx upstream 长连接

    原文: http://bollaxu.iteye.com/blog/900424 Nginx upstream目前只有短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connecti ...

  4. Tomcat 长连接与短连接性能测试

    环境: 操作系统:centos 6.5 x64 cpu:32 core 内存:  32G web服务器:tomcat 6.x jdk :1.6x 测试环境: 操作系统:centos 6.5 x64 c ...

  5. nginx 的限制连接模块limit_zone与limit_req_zone

    转载于:http://storysky.blog.51cto.com/628458/642970/ nginx 上有两个限制连接的模块一个是 limit_zone 另一个是 limie_req_zon ...

  6. nginx tcp proxy 连接保持设置

    根据前文Nginx tcp proxy module试用的设置,在测试环境中发现tcp连接经常掉线.在该项目站点上找到一个issue,也谈论这件事情,不过别人用在web socket协议上. 其实就是 ...

  7. nginx配置长连接

    http { keepalive_timeout 20; --长连接timeout keepalive_requests 8192; --每个连接最大请求数 } events { worker_con ...

  8. nginx配置socket连接

    author: headsen  chen date:  2019-08-08 18:52:36 notice :个人原创 Nginx通过在客户端和后端服务器之间建立隧道来支持WebSockets通信 ...

  9. nginx配置长连接(ajax60秒请求超时)

    个人博客 地址:http://www.wenhaofan.com/article/20180911150337 1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应 ...

随机推荐

  1. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十一)

    名思义是 给游戏场景 添加一个 天空背景 让游戏更加精美,更具有魅力 添加天空盒 有两种方式  1 : 在当前相机上添加skybox   2 : 在当前场景上添加skybox 上面的两种方式的结果是一 ...

  2. ubuntu lapack安装与使用

    https://blog.csdn.net/zouyu1746430162/article/details/53374693 https://blog.csdn.net/mlnotes/article ...

  3. mysql小题趣事

    题一 答案: case when +条件 +then 显示什么 +else+显示另外什么+end

  4. 记一次win10 installer安装MySQL 5.7的过程

    最新发现:其实就是windows显示的DPI改为了200%导致的,改成100%就没问题了.囧 不想折腾参数配置什么的,直接使用installer安装的. 诡异的是,安装完成之后需要配置,但界面上看不到 ...

  5. QA:Initialization of bean failed; nested exception is java.lang.AbstractMethodError

    Q: <hibernate.version>5.2.10.Final</hibernate.version><dependency> <groupId> ...

  6. sublime3 docblocker插件定制自己的注释,配置步骤

    DocBlockr很好用,不仅仅可以自动生成注释,还可以手动编辑注释的格式. 安装方法:   Cmd+Shift+P -> Install Package -> docblockr  wi ...

  7. 解决parseSdkContent failed java.lang.NullPointerException错误

    今天我的eclipse崩溃了,报“parseSdkContent failed java.lang.NullPointerException”的错误. 所有的安卓项目都不正常,创建项目就会报 java ...

  8. 【乐呵一下】WINDOWS有个非常低级的错误!

    该错误来自微软windows附带的计算器(开始附件计算器). 1. 当你尝试用9216除以96并按下=按钮时,计算器竟然没有反应!!! 而9216除以97,98却正常. 2. 还有一个错误,当你尝试用 ...

  9. Java多线程-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier

    Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-从一个错误的双重校验锁 ...

  10. win7 、2008 提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法

    在安装控件过程中出现提示Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法 1. 点 ...