您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 性能测试 > 正文

一次真实项目性能测试与调优的总结

发表于:2017-08-06 作者:被测试的小强 来源:

  现象
  因为公司需要对系统进行压测,因此使用LR对网站的注册业务进行压力测试,在并发量为7时,出现了以下大量的报错:

  分析与解决
  首先,解决出现最多的27796报错,在尝试修改注册表中
  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters的两个键值:
  TcpTimedWaitDelay --- 1;MaxUserPort ---- 65534;将端口等待时间调小,最大可用端口调大,再次运行LR不再报27796错误;
  小强点评:
  很多朋友遇到错误的时候就懵逼了,完全不知道干啥了,各种十万个为什么。而我一直强调有错误不怕,有100个错误也不怕,我们最简单的原则就是解决那个影响大的。
  其次,针对大量的503报错,首先查看了系统报错日志,日志显示为:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure,这时想到小强老师上课讲的,正好和这个类似,于是调整和timeout相关的参数。重启mysql后再次运行场景,还是存在大量503错误,查找系统日志还是报相同的错误。
  小强点评:
  此类型错误课上讲过,本学员很好的联想到了并尝试解决。知识根本不在乎多少,而在于是否系统化,学很多东西但根本没有建立系统化的结构p用都木有!此处调整后并没有太好的效果。这时候很多朋友又会十万个为什么了,其实大可不必。性能测试好玩的地方就是这样,需要你慢慢的来分析的,一下就搞定还玩个啥
  实在木有头绪 , 询问小强老师后,更改了tomcat的配置,在配置文件中增加参数:
  minEvictableIdleTimeMillis、numTestsPerEvictionRun、testOnBorrow等并尝试进行调整设置之后
  不再报链接失败错误;
  小强点评:
  很多人碰到多个问题时候就不会分析了,即使会,分析一个之后解决不了就放弃了。凡事都有方法可循,我们太重视技术而忽略了方法和思维,这也是为什么复杂工作只有少数人可以干的原因之一。而这里我也是根据分层思维提供的指导,具体还是本学员理解并解决了,必须点赞!我一直觉得教人不单单是教技术,而更要教做这个事情的方法思维,这才是有价值的。
  正当高兴之余,好景不长,一不小心在nginx中看到了这样一个错误:limiting connections by zone "addr", client:..............,这里理解是同一个ip被限制了链接,打开nginx的配置发现里面确实存在着限制参数:limit_conn_zone $limit zone=addr:1m; 这个参数是限制同一IP对系统进行多次请求,但是压力机是一台机子,所以肯定会报错,在压力测试时可以将此处都注释掉,比较重要的一点是,不仅要注释掉这一句配置,需要将server区中和这个配置有关的limit配置都注释掉后重启nginx;

  运行LR不再报503的错误;高并发下事物通过率也是百分百。那是我感动的泪水。。。
  小强点评:
  通过引导学会了利用关键信息进行排查分析,非常赞,并能学一通百,进步很大,再次点赞。很多时候老师是扮演的是一个引导者,并不是万能的神,更多的其实还是靠大家自己的修行才行。
  之后还在压测中发现个问题,
  com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException大概和开发聊了一下,应该是注册业务涉及很多表,表里可能有设置外键,开发排查之后解决掉了,现在基本都非常稳定啦
  小强点评:
  不耻下问是最脑残的鸡汤,这句鸡汤害了多少人失去了主动思考和解决问题的能力?我想大家都心知肚明。遇到问题要学会自己思考并尝试,之后可以在去探讨带着你的思想。除此之外,现在是团队合作,每个人都有各自的擅长,不会的不要去较真,找会的人帮忙在学习,别太死板。此处学员发现问题并和开发协商之后解决,非常好!擅长协作是每个测试工程师必备的技能也是最重要的!