问题原因找到了,那就好办了。

    找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的RDS。  并重新进行压力测试。

  哦豁~ 开心,压力测试顺利,异常率大大降低实际为:

  数据库DBA反馈,数据库收到很多请求处理,数据库开始正常工作。(之前都是,数据库连接满,但活跃连接只有1到5个)。 数据库连接数在50到100之间波动,且基本都是活跃连接。

  NGINX和php那边都工作正常,服务器cpu压力下降。各项功能都平稳。

  然后开始真真正正进行模拟生产用户数据压力测试:

  

   生产环境数据如下:

    高峰时期: 总并发连接数12w 活跃连接数10万;新建连接数1300/s;吞吐量:6200/S。

    如何通过调整jmeter脚本的线程数,吞吐量来实现该场景,就得多次尝试了。

   jmeter运行环境如下: centos7   java1.8.161; jmeter 5.2.1   4C8G。 阿里云机器。

  

    1,实现并发连接数和活跃连接数。

      并发连接数=活跃连接数+非活跃连接数

        活跃连接数=jmeter线程数*执行机器数量

        非活跃连接数=tcp连接中断数: 实际执行过程中发现:如果设置的吞吐量过高,会造成大量的非活跃连接数。与真实请求场景不一致。 后面细说。

    

       如何提升活跃连接数:------加机器+内存。没其它办法。现在的机器一般cpu都是够用的。  实际设置1800线程运行时,机器只有20%的cpu使用率。

        

        通过测试的经验计算,大概一个线程需要消耗3M内存。所有如果想跑2000线程,那么你得设置虚拟机6000m,否则,会爆出内存溢出错误。

        通过命令启动执行机:

        JVM_ARGS="-Xms1024m -Xmx6000m" ./jmeter-server &     ####注意,不要超过自己机器实际能使用的内存!!!!留点空闲给机器本身用,否则会很卡,很慢。异常高。

        我喜欢这种方式,方便调整内存。哈哈。

          顺便写几个清理内存和杀进程的命令:

查看执行机运行日志:
tail -f apache-jmeter-5.2.1/bin/jmeter-server.log 查看1099端口:
netstat -an|grep 1099 查看java进程:
ps -ef|grep java 批量杀进程操作:我特别喜欢哈哈
ps -ef|grep java|awk '{print $2}'|xargs kill -9 统计查询tcp 80端口数量:
netstat -nat|grep -i 80|wc -l 统计查询tcp time_wait 端口数量:
netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]}' 查看内存使用量:
free -m 同步缓存:
sync 清理内存:建议在杀java进程后使用,先使用sync同步。
echo 3 > /proc/sys/vm/drop_caches

  实际运行效果,机器正常跑2000线程正常,不卡,不慢,非常happy~

  

   然后计算10万用户=10万除以2000===50个机器~~~ 汗~~有点难申请。还要加5个调度机、、一共是55个机器~  1个调度机带10个执行机。

     和大佬凶猛的沟通了一阵子~ 同意了。直接在阿里云上复制已经调试好jmeter的执行机。刷刷刷刷~~~机器到手了。 反正阿里云按量收费,用一天也没多少钱。

   

    如何降低非活跃连接数呢?

      由于我设置的tcp连接超时周期为30秒,当我未对吞吐量进行限制时:发现非活跃连接数非常多。 这与生产环境不一致。(该测试结果图片基于 1带13执行机,用户线程1500.当时的吞吐量为12000/s,大大超过实际的需求)

      

  生产环境数据:

  仔细琢磨计算了一下。生产10万活跃用户,才6200吞吐量,那么。 2万活跃用户的吞吐量应该是===1300:

    这里发现一个关键指标: 新建并发连接数:生产环境高峰期也就1300,而我 6000+;所以,会出现大量的非活跃连接请求就很正常了。

    解决办法:使用jmeter定时器》》精准吞吐量计时器来对吞吐量进行限制。降低新建连接数,降低吞吐量。

    通过计算:20000活跃用户吞吐量1300,那么jmeter脚本2000线程对于吞吐量是130/s。额好低。不忍直视。习惯了几千几千上万的,吞吐量。最后发现只要设置130。

          所以:这里有一个结论,真真的性能大神测试时,都不是像我这样的搞茫茫多机器去跑,一般也就设置100到200线程,进行服务器性能测试。通过性能调优来优化服务器。通过对测试结果日志的分析,来找到服务器问题的。

             而不是像我这样,去想着把服务器搞挂,来复现问题…………  

    好了,设置好jmeter吞吐量,再进行一波测试。

非活跃连接数大大降低~~达到理想要求。  但还是比较多~ 新建请求连接数1690~ 超过高峰1300. 还需要慢慢优化~

      

  脚本环境都调试完毕,以后,就开始加机器,测试吧~~~

  待补充: 等测完了再来补充

 过去了一个月,终于有时间来补欠下的债了。。

   

  与运维沟通配置3套压测机环境,都是1带14.共组成42个执行机。

  单机脚本配置2200用户。

  测试接口共配置51个业务接口,共组成7个业务流程。

  测试计划为:

业务量类型

80%

100%

150%

目的

并发数

9600

12000

18000

分析性能变化趋势

分析性能问题

帮助定容定量

TPS

4960

6200

9300

新建连接数

1680

2100

3250

 

        80% 场景结果:

根据图表数据可以看到;业务系统服务器内存使用40%,cpu使用52%,服务器各个指标稳定。Jmeter请求响应平均响应时间100ms,请求异常数量为0;RDS各项指标也很稳定,主库从库连接数,TPS都很正常。请求连接没有积压。

100%请求场景:

根据测试结果数据可以看到,业务系统服务器CPU,内存稳定,负载均衡器也很稳定。RDS主库和从库都很稳定。

Jmeter 请求有0.05%的异常概率,经过分析,为压测机器tcp端口耗尽超时导致。不影响服务器性能。

150%性能场景:

当进行150%负载时,服务器cpu达到90%以上,并出现排队现象。

TPS/QPS稳定在9000左右。 数据RDS连接数增加到100%时的几倍。请求响应平均时间为400ms。服务器已经满负荷运行。

使用手机进行打开APP进行体验:打开页面缓慢,打开链接页面在3秒左右,但都能正常操作。服务器能正常处理数据,未出现卡死,奔溃。

稳定性测试结果: 持续运行3小时。

测试结果:实际活跃连接数为90000左右,总连接数为155500左右。服务器cpu性能跑满。RDS压力不大。持续运行3小时后,系统能正常提供服务,但比较慢。

  

测试结果总结:

参数

测试数据

性能指标

80%

100%

150%

ART(ms)

90

100

400

TPS

4900

6050

9000

CPU

40.1%

40.2%

90%

MEM

40

40

44

RDS主QPS/TPS

1811/257

1781/303

2624/412

RDS读QPS/TPS

13195/279

12820/289

19443/411

测试数据已经完成,剩下的就是分析调优了,这个后续再开新章节。

遇到一个新的错误: 机器内存耗尽了。自动杀死进程。--调整jvm的内存,减少线程数。保证可用内存大于200M。

  

  

    

  

    

    

Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据的更多相关文章

  1. Nginx网络架构实战学习笔记(五):大访问量优化整体思路、ab压力测试及nginx性能统计模块、nginx单机1w并发优化

    文章目录 大访问量优化整体思路 ab压力测试及nginx性能统计模块 ab压力测试及nginx性能统计模块 ab压力测试 nginx性能统计模块 nginx单机1w并发优化 整装待发: socket ...

  2. 软件性能测试分析与调优实践之路-JMeter对RPC服务的性能压测分析与调优-手稿节选

    一.JMeter 如何通过自定义Sample来压测RPC服务 RPC(Remote Procedure Call)俗称远程过程调用,是常用的一种高效的服务调用方式,也是性能压测时经常遇到的一种服务调用 ...

  3. 测试开发mysql性能调优总结(一)

    测试开发mysql性能调优总结 mysql在创建表的时候,对每个字段选择合适的数据类型很重要! 根据个人的经验总结: 整数类型选择 INT小数类型选择 DECIMAL字符串类型选择 TEXT日期时间选 ...

  4. OCM_第十三天课程:Section6 —》数据库性能调优 _结果缓存 /多列数据信息采集统计/采集数据信息保持游标有效

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  5. JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

    一.JVM参数配置 1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 - ...

  6. JMeter压力测试,http请求压测,5分钟让你学会如何压测接口!

    JMeter压力测试 官网:https://jmeter.apache.org 最新款的jmeter需要java8的支持,所以请自行安装jdk8.这里就不啰嗦了. 可以根据自己的系统下载zip或者是t ...

  7. Jmeter 压力测试笔记(2)--问题定位

    事情已经出了,是该想办法解决的时候了. 经过运维和DBA定位: 数据库读写分离中,读库延时超过了30秒,导致所有请求都压在主库.另外所有数据库都连接数都被占满,但活跃请求数量缺不多. 数据库16K的连 ...

  8. jmeter压力测试笔记- HTTP协议

    一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...

  9. Jmeter 压力测试笔记(4)--分布式部署

    分布式部署:坑,大坑~ 超级坑~~~~ 在这里坑了2天,整整2天.其它略过不表下面只写经验: 在linux下,centos7系统   1主 14执行机. jmeter版本 5.2.1  所有机器在同一 ...

随机推荐

  1. JAVAEE学习day05学习,数组

    容器及元素的概念 容器:是将多个数据存储到一起 元素:每个数据称为该容器的元素 数组的概念 数组:数组是长度固定,存储数据的容器,保证多个数据的类型要一致 数组定义格式及其描述 动态定义: 数据类型 ...

  2. What is the difference between shades and shadows?

    Shade is the darkness of an object not in direct light, while shadows are the silhouette of an objec ...

  3. ajax js分页算法分析

    显示效果:[页面总数小于等于10,全部显示,当前页特殊显示]上一页  1   2   3   4   5   6   7   8   9   10   下一页 [页面总数大于10,部分显示,当前页特殊 ...

  4. Selenium系列(三) - 针对元素常见的简单操作

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  5. VirtualBox 安装 Centos8 使用 Xshell 连接

    1.下载CentOS CentOS下载地址:https://wiki.centos.org/Download 这里选择本地安装包,网络安装包在安装时需要在线下载资源比较慢 2.安装VirtualBox ...

  6. JavaScript(9)--- 跨域

    JavaScript(9)--- 跨域 一.跨域原理(同源策略) 在项目搭建的初期,因为现在项目基本上都是前后端分离,所以不可避免地会遇到跨域问题,而造成跨域的罪魁祸首就是浏览器的同源策略.所以要解决 ...

  7. css网页重置样式表(多版本)

    Eric reset.css html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ...

  8. Python第六章-函数06-高阶函数

    函数的高级应用 二.高阶函数 高级函数, 英文叫 Higher-order Function. 那么什么是高阶函数呢? 在说明什么是=高阶函数之前, 我们需要对函数再做进一步的理解! 2.1 函数的本 ...

  9. RMQ(倍增法求ST)

    解决什么问题:区间查询最值 倍增思想:每次得出结果的范围呈2的幂次增长,有人说相当于二分,目前我觉得相当于线段树的查找. 具体理解看代码: /*倍增法求ST*/ #include<math.h& ...

  10. Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...