爆肝整理,性能测试-内存问题定位分析+常见业务场景bug(汇总)
目录导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜前言1、性能测试-内存溢出问题定位和分析堆内存溢出1稳定性压测一段时间后jmeter报错日志报java.lang.OutOfMemoryError.Java heap space。2用jmap -histo pid命令dump堆内存使用情况查看堆内存排名前20个对象看是否有自己应用程序的方法从最高的查起如果有则检查该方法是什么原因造成堆内存溢出。3如果前20里没有自己的方法则用jmap -dump来dump堆内存在用MAT分析dump下来的堆内存分析导出内存溢出的方法。4如果应用程序的方法没有问题则需要修改JVM参数修改xmsxmx调整堆内存参数一般是增加堆内存。栈内存溢出1稳定性压测一段时间后jmeter报错日志报Java.Lang.StackOverflowError。2修改jvm参数将xss参数改大增加栈内存。3栈溢出一定是做批量操作引起的减少批处理数据量。持久代溢出1稳定性压测一定时间后日志报Java.Lang.OutOfMemoryError.PermGen Space。2这种原因是由于类、方法描述、字段描述、常量池、访问修饰符等一些静态变量太多将持久代占满导致持久代溢出。3修改jvm配置将XX:MaxPermSize256参数调大。尽量减少静态变量。线程死锁1容量测试压测一段时间后LR报连接超时。2造成这种现象的原因很多比如带宽不够中间件线程池不够用数据库连接池不够连接数占满等都会造成连接不上而报超时错误。3jstack命令dump线程栈搜索线程栈里有没有block如果有的话就是线程死锁找到死锁的线程分析对应的代码。数据库死锁1容量测试压测一段时间后LR报连接超时。2造成这种现象的原因很多比如带宽不够中间件线程池不够用数据库连接池不够连接数占满等都会造成连接不上而报超时错误。3数据库日志中搜索block能搜到block的话就是存在数据库死锁找到日志查看对应的sql优化造成死锁的sql。2、常见单业务场景和混合业务场景性能bugbug1我之前做压力测试压测一段时间后频繁的报连接超时和socket close套接字关闭原因当时我们分析是因为Tomcat中间件线程池不够用数据库连接池也不够并且连接数也被占满了导致我们连接不上而报超时和套接字关闭等错误性能bug2还有一次就是我在做压测的时候我用50并发压测TPS曲线正常应该是平缓的但是TPS曲线剧烈下降和抖动并且一直持续定位问题当时我在服务器端用的jheap和dstat命令监控发现是因为jvm进行垃圾回收的时候老年代空间也满了引发了fullGC然后导致我们线程暂停了进行垃圾回收后面解决这个问题的话是我们开发同事把那个老年代的空间进行了增加修改了JVM参数并且增加了堆内存xms和xmx后面fullGC频率就变低了很多。性能bug3稳定性压测一段时间后jmeter报错日志报堆内存溢出OutOfMemoryError后面我们开发同事把JVM的参数改了一下增加堆内存把xms和xmx都调大了就没报错了性能bug4压测一段时间后jmeter报错日志报栈内存溢出StackOverflowError。后面我们开发同事把JVM的参数改了一下增加栈内存把xss参数改大了后面就没报错了性能bug5有次压一个查询接口的时候发现接口的平均响应时间非常的长后面定位发现是因为在数据库用联合索引的时候作为查询条件的那个字段没有放在查询条件的最左前缀导致索引失效了后面变成了全表扫描后面我们给字段加了唯一索引查询时间就提高了很多性能bug6我有次压测的时候发现应用服务器的CPU达到90%并且还是8核的CPU当时就觉得有很大的问题后来通过jprofiler工具对CPU进行了监控发现有个谷歌开发的gson库在调用的时候对CPU的消耗非常的大当时把这个问题反馈给到了开发开发同事那边把这个谷歌的gson库换成了阿里巴巴的fastJSON后发现性能好了不止一倍CPU的占用只有20%、并且tps也提升上来了性能bug7当时碰到过一个最难的性能bug就是压测一段时间后线程直接不动了并且TPS直接为0了但是呢服务器硬件的资源CPU和内存 IO等等又都是非常空闲的、通过JDK自带的jvisualvm工具我在查看线程的时候发现至少有2个线程一直处于红色的阻塞状态后来在查看报错日志的时候发现有个CaseController类报错了、然后去看一下Java代码、发现代码里面一个锁synchronized里面又嵌套了另外一个锁后面我们研发同事看了之后改了一下代码把Thread.sleep()线程等待和锁里面加锁的代码给优化了后续就没问题了性能bug8有次我在做压测的时候发现TPS就是上不去然后呢通过用dstat -tcmnd --disk-util 命令去监控的时候发现CPU的使用率始终没有很大的波动、空闲95%左右、只占用了5%左右、当时就觉得应该不是fullGC和youngGC 内存泄露和内存溢出的问题。为了进一步的排查和定位我后面通过通过jstack 进程号 1.log命令去获取对应的日志、看一下是不是线程阻塞的问题然后把捕捉的日志下载到本地用notepad打开、发现Thread.statBlocked阻塞的地方多达70多个地方。后面又通过反编译工具把log4j的jar包打开、找到了Category.class这个类、发现里面的第204行调了一个方法叫做callAppenders里面用了synchronized的锁原因找到了是log4j里面为了保证线程的安全里面加了很多的锁但是却牺牲了很多的性能后面我们优化的时候就是首先进入项目中找到log4j.properties这个文件然后把log4j.rootLoggerinfo 中的info改为error、提升打日志的等级然后重启项目这个进行优化之后、重新压测发现TPS达到了7000/sec 、优化阻塞之后发现性能提升了3倍左右、CPU也占用了15%左右。当然也可以用log4j2打日志因为这个log4j2在原来的log4j的基础上做了重构做了性能的优化、做了异步处理比log4j和logback有了18倍的性能的提升性能bug9在做压力测试的时候吞吐量tps上不去原本的TPS标准是要达到400/sec但是实际压测只有50多的tps后面发现是数据库的磁盘空间满了导致查询速度和请求速度过慢然后我让我们后端开发同事把数据库的磁盘清理一下就恢复正常了。性能bug10我在压测修改密码新建用户投保用户列表接口保单管理接口支付接口保单查询接口查看险种接口投保接口接口的时候【这里面接口自己选一个】平均响应时间在10s左右不符合性能指标3s后来发现原因是接口通过redis每次请求redis都会初始化后面我们在测试环境增加路由配置之后这个问题就解决了完整版企业级性能测试实战速通Jmeter性能测试到分布式集群压测教程下面是我整理的2026年最全的软件测试工程师学习知识架构体系图一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜人生最动人的风景往往藏在最难攀爬的高处。当你觉得力竭时请记住每一次坚持都在雕刻更强大的自己。别问路有多远只管迈步向前别怕山有多高向上攀登就是答案你体内沉睡着改变世界的力量每个清晨都是改写命运的新机会每次挫折都是精心包装的礼物。当全世界都在说不可能时正是你证明可能的最好时机

相关新闻

设计模式篇2——观察者模式:以直播间送礼系统举例

设计模式篇2——观察者模式:以直播间送礼系统举例

在软件开发中,我们经常遇到这样的场景:一个动作发生后,需要同时触发一系列后续操作。如果你把这些操作全部写死在一个方法里,代码就会变成一团乱麻(所谓的“面条代码”),牵一发而动全身。今天&a…

2026/7/5 12:09:30 阅读更多 →
如何高效接入日本股市实时数据?StockTV API 对接实战指南

如何高效接入日本股市实时数据?StockTV API 对接实战指南

在全球金融市场中,日本股市(东京证券交易所 TSE)作为亚洲最重要的市场之一,拥有索尼、丰田、任天堂等众多核心资产。对于开发者而言,获取低延迟、高可靠的日本股票实时行情是构建量化系统或行情应用的关键。 本文将详细…

2026/7/8 18:47:04 阅读更多 →
从“小工”到“专家”,我的软件测试修炼之道

从“小工”到“专家”,我的软件测试修炼之道

你好,我是茹炳晟。我从 2002 年开始做软件开发,2005 年时转型成为测试工程师,算起来已经在这个行业摸爬滚打了 16 年。2005 年的时候,软件测试还停留在重复性手工测试的阶段,而且受重视程度远不如软件开发,…

2026/7/3 18:54:46 阅读更多 →

最新新闻

GXDE OS深度体验:基于DDE DE 15的轻量Linux发行版如何平衡经典与实用

GXDE OS深度体验:基于DDE DE 15的轻量Linux发行版如何平衡经典与实用

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 上周在折腾一台老笔记本,想找个轻量、好看、开箱即用的 Linux 发行版,结果在社区里看到有人提 GXDE OS。第一眼…

2026/7/9 19:58:29 阅读更多 →
华硕笔记本性能瓶颈如何破?开源轻量级控制工具G-Helper全解析

华硕笔记本性能瓶颈如何破?开源轻量级控制工具G-Helper全解析

华硕笔记本性能瓶颈如何破?开源轻量级控制工具G-Helper全解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…

2026/7/9 19:54:28 阅读更多 →
用户复购率飙升 80%!这套“消费即触达“的留存机制,数据说了实话

用户复购率飙升 80%!这套“消费即触达“的留存机制,数据说了实话

先说两组数据。某连锁便利店在接入一套用户运营模型之后,3个月内复购率从17%拉到了31%,接近翻倍。更重要的是,他们没有增加一分钱广告预算,也没有做任何打折促销。而同一商圈内的竞品门店,同期复购率下跌了4个百分点。…

2026/7/9 19:52:27 阅读更多 →
NVIDIA Profile Inspector深度解析:显卡性能调优的底层机制与实践方案

NVIDIA Profile Inspector深度解析:显卡性能调优的底层机制与实践方案

NVIDIA Profile Inspector深度解析:显卡性能调优的底层机制与实践方案 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector作为一款开源显卡配置工具,突破了…

2026/7/9 19:52:27 阅读更多 →
智能阅卷革命:开源AI解决方案如何让教师批改效率提升90%

智能阅卷革命:开源AI解决方案如何让教师批改效率提升90%

智能阅卷革命:开源AI解决方案如何让教师批改效率提升90% 【免费下载链接】OCRAutoScore OCR自动化阅卷项目 项目地址: https://gitcode.com/gh_mirrors/oc/OCRAutoScore 在数字化教育浪潮中,传统手工阅卷已成为制约教学效率的最大瓶颈。教师每天耗…

2026/7/9 19:50:27 阅读更多 →
别只会用 AOP!源码级深度解析核心接口与代理机制,一次性吃透底层原理

别只会用 AOP!源码级深度解析核心接口与代理机制,一次性吃透底层原理

文章目录 概述 一、模块概览与项目结构 1.1 源码目录全景 二、构建配置与依赖关系 2.1 Gradle构建文件 2.2 关键依赖解读 三、核心概念体系(接口层) 3.1 Pointcut — 切点 3.2 ClassFilter — 类过滤器 3.3 MethodMatcher — 方法匹配器 3.4 Advice — 通知(AOP Alliance兼容…

2026/7/9 19:50:27 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻