性能测试——记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 首先 ...
随机推荐
- Java多线程编程(五)定时器Timer
一.定时器Timer的使用 在JDK库中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类确实TimerTask类,执行计 ...
- python中的可变数据类型和不可变数据类型
1.不可变数据类型:数值.字符串.元组 不允许变量的值发生变化,如果变量的值变化了,那么就是新建了一个对象:对于相同值的对象,在内存中只有一个对象. 2.可变数据类型:列表.字典 允许变量的值发生变化 ...
- split分割文件与数据
split主要用途:在之前计算机发展的时候,我们必须分割文件,才能将大量数据放入多张软盘中,而今我们分割文件有了其他的目的,比如提高可读性,生成日志以及发送有大小限制的E-mail附件. 工作原理:s ...
- 【网络安全】HTTPS为什么比较安全
目录 HTTP和HTTPS简介 SSL协议 SSL协议的主要功能 SSL协议加密数据的原理 用户和服务器的认证流程 TLS 参考 HTTP和HTTPS简介 1. HTTP协议为什么是不安全的 http ...
- linux centos ubutun svn搭建
1.卸载SVN 查看自己是否安装了svn svn 上图显示已安装,可用以下命令进行卸载 sudo apt-get remove --purge subversion (–purge 选项表示彻底删除改 ...
- git 陷阱小记
1.文件添加陷阱: 1).git 提交命令快捷键: git commit -a -m "",能够跳过git添加文件到暂存目录步骤 2)git add . git commit -m ...
- Java实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型 ...
- [BZOJ4310] 跳蚤 SAM || SA
没有代码的. 传送门 先二分出第 \(mid\) 大的字串 \(s\),然后从后往前切割,每次大于 \(s\) 了就不行. 涉及到的操作:求第 \(mid\) 大子串:比较两个字串(求 \(lcp\) ...
- [考试反思]1024csp-s模拟测试86:消耗
%%%两个没素质的和一个萌两小时AK 最近貌似总是可以比较快速的拿下T1,然后T2打到考试结束... T1是套路题没什么好说的. T2是一个比较蠢的博弈题,我花了很长时间干各种乱七八糟的事 什么打表啊 ...
- js取两位小数点
var money = one.money; var tmoney = money.substr(0,money.indexOf(".")+3);