JMeter性能测试工作中遇到的问题及剖析,你遇到了几个?

JMeter性能测试工作中遇到的问题及剖析,你遇到了几个?

常见性能测试剖析

1、系统资源问题
CPU/内存/磁盘/网络...

2、语言/代码:
JVM/PHP-fpm  ...etc

3、框架问题:
Sprint Boot /百度RPC...

服务单点性能问题

1、CPU负载
2、内存泄漏
3、磁盘IO
4、网络IO
5、JAVA Full GC
6、TCP连接数
7、工作线程打满
.....

案例1:某次压力测试,服务端CPU飙升打满,CPU计算型

TOP -H -p pid
Pstack pid
Trace -p pid

代码逻辑问题:
同步解析接口,使用正则方式匹配返回内容,但是由于返回内容过大,导致CPU飙升。正则,大数据的JSON序列化/反序列化

另外死锁问题也可以通过类似的方式调优
CPU不高,但服务响应耗时高,请求堆积;

案例2:某次压力测试,系统CPU等指标正常,但是偶发间断时间请求耗时特别高

JVM GC问题:
Full GC Stop the world
减少Full GC时间,老年代降低

案例3:某次压力测试,php程序,php-fpm内存增长,OOM导致服务挂掉

排查原因,使用了第三方so插件做JSON解析,但是第三方so插件有内存泄漏问题。

Max-request,fast-cgi 固定请求数后重启

案例4:某次压测,CPU/内存/网络 等指标表现良好,但响应耗时非常久

监控查看磁盘IO异常,追查发现日志级别设置为Debug,大量日志打印拖累性能

同步日志,可能是潜在的性能杀手

案例5:某次压力测试,CUP/内存/网络/磁盘 所有指标都表现良好,但是响应时间非常久

查看Nginx 日志,发现 request_time较长,但是 upstream_response_time 实际较短。

案例6:某次压测,同样的并发TPS,但是前期性能良好,后期数据库CPU飙升

压测会长生大量级的数据,数据增长会带来性能的损耗

压测数据不合理,导致统一设备关联多个用户,服务端不做限制的in查询

不合理分页,未做椰树limit,导致将数据库新增数据全部查询

案例7:某次稳定性测试,大并发TPS,前期性能良好,分片缓存,在模拟缓存单点失效大量的数据库穿透

缓存不合理的分片策略,使用分除模式。导致大量缓存统一时间失效。

不合理的负载均衡算法也会有类似的问题。

一致性的HASH解决此缓存问题

案例8:某次稳定性测试,如果HTTP入口流量仅百QPS,但下游RPC服务打卦

商户列表,for循环调用下游解决,导致请求数百倍扩大。

使用Batch接口减轻压力,Batch接口可能会带来功能隐患
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100683.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • auto.js淘宝秒杀脚本_京东秒杀脚本

    auto.js淘宝秒杀脚本_京东秒杀脚本AUTO.JS脚本实现小米、淘宝、京东抢购代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入代码你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细

    2022年5月3日
    294
  • MFC中使用COleVariant获取CMFCPropertyGridProperty属性窗口某个属性值

    MFC中使用COleVariant获取CMFCPropertyGridProperty属性窗口某个属性值  获取MFC属性窗口CMFCPropertyGridProperty中某个item的值时,如果不小心写错了类型,就会导致获取的结果不正确,原因就是COleVariant其实继承自一个特殊的结构体tagVARIANT。COleVariant类声明···C++classCOleVariant:publictagVARIANT{//Constructorspubli…

    2022年7月18日
    14
  • java怎么给byte数组赋值_关于数组的问题

    java怎么给byte数组赋值_关于数组的问题byte[]转String时,可以使用以下方式制定字符集编码://byteRequest为byte[]类型Stringrequest=newString(byteRequest,”UTF-8″);今天遇到一个问题,同样的程序在Eclipse里面运行和打成Jar包用cmd运行,一个在解析请求会报错,另一个正常。经检查发现是因为没有指定字符串的字符集导致的,因为操作系统默认

    2022年10月21日
    1
  • Maven name与artifactId 区别[通俗易懂]

    name:Thefullnameoftheproject.artifactId:TheidentifierforthisartifactthatisuniquewithinthegroupgivenbythegroupID.Anartifactissomethingthatiseitherproducedorused

    2022年4月17日
    109
  • Python学习笔记(一)PyCharm社区版安装教程

    Python学习笔记(一)PyCharm社区版安装教程因为工作的原因,这两个月开始学习Python。准备把学习的东西记录一下。因为是自己的电脑,有python3.8,但是没有安装编译器,所以从PyCharm安装开始。(安装python会自带IDLE编辑器,自己学习的时候用着挺合适的,但是要用于工作或者其他大一些的项目,还是安装PyCharm比较合适)接下来开始安装教程。1、首先通过官网下载PyCharm社区版的安装包。下图中可以看到,PyCharm分为专业版(Professional)和社区版(Community),推荐使用社区版,基本能满足.

    2022年8月29日
    0
  • ffmeg_facet的意思

    ffmeg_facet的意思音频文件转码简介本文描述如何从其它格式的音频转成符合语音识别输入要求格式的音频文件。由于底层识别使用的是pcm,因此推荐直接上传pcm文件。如果上传其它格式,会在服务器端转码成pcm,调用接口的耗时会增加。语音识别仅支持以下格式:pcm(不压缩)、wav(不压缩,pcm编码)、amr(有损压缩格式);8k/16k采样率16bit位深的单声道。即:pcmwavamr格式三选一。 正常情

    2022年9月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号