某项目性能测试经验分享

发表于:2010-4-09 13:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Dickensi(网易博客)    来源:51Testing软件测试网采编

  然而事情并非如此顺利结束,在接口测试进行回归的时候,测试同学发现事件运算接口TPS不管怎么压都只有三四十,当时看到这数据就傻了眼,要知道以前压的时候是400+,相差了10多倍,赶紧检查数据库,环境配置,没发现任何异常。没有办法只能再次打开Jprofile再次压测进行监控看看能不能捞到些有用数据, 在CPU报告上发现一个非常可以的方法bsh.Interpreter.eval()占了我72%的CPU,具体情况如下图(当时忘记截图了,将就下看山寨版CPU图吧!):

点击图片可在新窗口打开

  这个方法在程序中是来支持一些脚本注入运算的,为了进一步确认是否是此方法导致TPS上不去,找出该代码把脚本引擎调用用的地方直接替换成一个固定值1给以前的调用方,再进行压力测试,果然不出所料TPS飚到正常水平,问题算是定位出来了,后来了解到使用bsh引擎的原因是由于在其它接口性能测试中发现以前使用的MVEL脚本引擎存在内存泄露,靠,怎么都有问题!网上查了一些MVEL相关资料,感觉应该可以避免,不管怎么样先试试,先确认下MVEL会不会有性能问题,直接把以前的代码回滚到使用MVEL的版本,如下所示:

public  Object computerRUM(Map<String,Object> eventInfo, RumDO rumDO) {

String expresion = rumDO.getExperssion();

Serializable expressCompilor = getCompilorFromCache(expresion);

     if (expressCompilor == null) {

         Serializable expressCompilor = MVEL.compileExpression(expresion);

}

     Object result = MVEL.executeExpression(compiled, eventInfo);

     return result;

}

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • Jessileen
    2010-5-26 15:49:38

    太好了,应该多些这种实例文章

  • 白袍大法mm
    2010-4-10 14:46:45

    结合实际项目写的,好难得

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号