性能测试——记XX银行保全项目性能问题分析优化
记XX银行保全项目性能问题分析优化
数据库问题也许是大部分性能问题的关注点,但是JAVA应用与数据库交互的关节,JDBC 就像是我们人体的上半身跟下半身的腰椎,支持上半身,协调下半身运动的重要支撑点。假如腰椎出问题了,在强壮的上半身或者下半身也是只能说身体瘫痪着。
就如数据库设计很优良或者JAVA应该设计开发代码写得非常优化,但是在JAVA应用代码与数据库之间的桥梁没设计衔接好,彼此之间的数据交互沟通不顺畅,那性能问题还是非常严重的。如资源型的内存泄漏、系统频繁抛出各种异常等现在导致影响系统性能。
前段时间客户方一套系统运行了四年多了,数据库大部分表数据量确实很大 百万以上数据量,而这段时间却频繁内存溢出,需要进行测试诊断问题。该项目是两家公司合作开发设计的,都有性能测试人员,公司要我争取拿下该项目测试。于是过去该项目进行前期的测试调研等工作,当我准备过去写测试计划、测试方案、优化方案时,客户方的领导说另外一家公司在多久前都已经写好类似的文档了,郁闷。
于是我着手开始写这些文档,主要是写优化方案,只能根据平常的优化经验等写出大概的解决方案,但是这样不能对症下药也许客户方不认可,于是我询问了开发设计人员性能问题大概现状描述性,针对性的整理的优化方案;
看了一些代码、日志、设计文档等资料大概明白问题点了,日志设计问题、异常处理问题、数据库设计问题等设计问题。写成文档形式等发送给客户方后,就这样把该项目的测试任务接下来了。其实并不是哪些文档作用多大,只是该项目我以前帮忙优化过问题,那是今年四月份我刚来我们公司,这个项目也是一直出现问题,那时是另外一家公司也就是我们合作该项目公司的人员做的或者说现在跟我们竞争性能测试的公司做的,那时四月份他们测试该项目很长时间, 但是测试过程中一直出现内存溢出一直找不出问题,请了他们公司的专家,好像也是没看出问题点,搁了很久,我们公司老总就让我过去试试看,结果是一些很简单的问题,他们没注意至关注代码问题,所以一直找不出问题,就那样那时那个项目我承接过来测试了一周把问题找出来并说明了优化方案解决了。也许是那时有帮忙解决该问题缘故,这次我写好了哪些文档发给客户方后,客户领导知道是我来负责测试的就直接点名我来做了。
测试工作顺利展开,搭建测试环境、测试需求调研等做好后开始测试。参数调整确实有问题,但是不是主要问题,虽然发现该项目的JVM调整不符合逻辑,但是这个只是指标不治本,第一周工作就先把JVM设置合理性化优化好,第二周测试把部分数据库问题抛出来了,很多是数据库设计不合理以及不走索引等问题,因为这次目的是找出JAVA代码问题,所以数据库问题我暂时优化下不会造成干扰我定位JAVA问题就行。经过两周的普查测试对比,发现公共问题是 应用服务调用数据库数据时出现问题。也就是JDBC死锁问题。
但是经过审核代码发现这个问题以现在的项目组人员没办法优化,因为现在该项目组结项了没有太多人力资源协助优化,这时最郁闷的事情,而且该问题从设计就错了,历史性问题没人敢接或者说这个项目本来是另外一家公司做的,但是那批人员走了,现在虽然有问题谁敢去接,接了优化面积一大片出现故障没人赔得起。这才是我最郁闷的地方。虽然问题是定位清楚也说明优化方法了,但是项目领导心里都清楚这件事情优化的分量。
没办法情况下,我只能最小化优化,最大化调整,看能不能调整部分技术代码,不改变业务实现逻辑方式下暂时解决,看了两天的代码,发现在数据抽取转换时char 转为string 多余了,而且有多家了循环判断,那时也只是猜测。于是改了下,让开发人员帮忙编写成CLASS 给我,重新部署好后进行优化前后测试对比,也许是瞎猫碰到死老鼠,测试前后性能优化对比响应时间从大部分交易响应时间平均6秒多,降为2.5秒以下。
在稳定性测试后发现还有部分内存泄漏,发现是资源调用没释放问题,跟开发人员说怎么改后重新测试,内存使用降低了,但是还是没办法解决,因为最大问题是JDBC的实现方式问题,发了邮件说明问题后,没人敢解决。我写了测试报告说明了问题优化方式后,离开该项目,但是响应时间等问题解决了,内存泄漏问题也不会那么严重了,预计不会每周重启了,至少可以成三到四周了
性能测试——记XX银行保全项目性能问题分析优化的更多相关文章
- 性能测试——记XX银行电票系统上线后宕机问题诊断优化
四月份我们公司负责的电票系统上线了,这个系统上线比客户方其他系统上线还特殊,是二期改造项目,旧系统数据还要整合抽取到新系统中继续使用,而且该系统不是增量型方式开发上线的,而且全部开发完后全国上线的,这 ...
- 【Vuejs】335-(超全) Vue 项目性能优化实践指南
点击上方"前端自习课"关注,学习起来~ 前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 D ...
- windows系统与SQL SERVER 2008数据库服务性能监控分析简要
软件系统性能测试体系流程介绍之windows系统与SQL SERVER 2008数据库服务性能监控分析简要 目前大部分测试人员对操作系统资源.中间件.数据库等性能监控分析都是各自分析各自的监控指标方式 ...
- 【测试工程师面试】 记录XX银行面试
LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作. 18线地区,测试工作并不多.最好的差不多就是LZ目前待着的公司了.遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人 ...
- 【性能测试】常见的性能问题分析思路(二)案例&技巧
上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...
- 性能测试培训:Ajax接口级性能测试之jmeter版
性能测试培训:Ajax接口级性能测试之jmeter版 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest认为工具 ...
- 记一次SSM项目小结(一)
记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法 拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...
- QT项目性能调优小记
最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化. 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:htt ...
- 强大的django-debug-toolbar,django项目性能分析工具
强大的django-debug-toolbar,django项目性能分析工具 给大家介绍一个用于django中debug模式下查看网站性能等其他信息的插件django-debug-toolbar 首先 ...
随机推荐
- 百万年薪python之路 -- 基础数据类型的补充练习
1.看代码写结果 v1 = [1,2,3,4,5] v2 = [v1,v1,v1] v1.append(6) print(v1) print(v2) [1,2,3,4,5,6] [[1,2,3,4,5 ...
- 远程控制服务(SSH)之Linux环境下客户端与服务端的远程连接
本篇blog将讲述sshd服务提供的两种安全验证的方法,并且通过这两种方法进行两台Linux虚拟机之间的远程登陆. 准备工作: (1) 准备两台安装有Linux系统的虚拟机,虚拟机软件采用VM ...
- SpringBoot学习(二)探究Springboot启动机制
引言: SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起探究一下SpringBoot的启动原 ...
- 雷子聊并发编程(001):基础知识之串行&并行&并发
前言 编写正确的程序很难,而编写正确的并发程序则难上加难.与串行程序相比,在并发程序中存在更多容易出错的地方.那么,为什么还要编写并发程序?原因很简单,能充分发挥与利用多处理器系统的强大计算能力. 在 ...
- Java 用单向循环链表实现 约瑟夫问题
public class lianbiao2 { class Node{ Node next; int number; public Node getNext() { return next; } p ...
- 泛微OA系统多版本存在命令执行漏洞
0x01漏洞描述 泛微OA办公系统是一款协调办公软件. 泛微协同商务软件系统存在命令执行漏洞,攻击者可利用该漏洞获取服务器权限. 0x02漏洞危害 攻击者可以通过精心构造的请求包在受影响版本的泛微OA ...
- 读书笔记-《Maven实战》-2018/5/3
5.7依赖调解 1.当一个项目有以下依赖关系的时候:A->B->C->X(1.0).A->D->X(2.0),X作为A的传递依赖而拥有两个版本,Maven为了解决以上问题 ...
- node.js评论列表和添加购物车数据库表创建
2.1:评论列表--发表评论 用户点击新闻列表某一条新闻,看到新闻详细发表评论 -用户输入评论内容 -发表评论 [将用户评论内容保存数据库 xz_comment] 2.2:评论列表--发表评论-开发评 ...
- 【原创】使用批处理脚本生成包并自动上传到nuget
Hello 大家好,我是TANZAME,我们又见面了. NuGet 是什么这里就不再重复啰嗦,园子里一搜一大把.今天要跟大家分享的是,在日常开发过程中如何统一管理我们的包,如何通过批处理脚本生成包并自 ...
- window中php的交互模式
1.配置php的环境变量: 测试: cmd >> php --version 2.在cmd下编写测试脚本 1) php -r + php测试代码: 2) php -a + Enter ...