一、测试服务器:
  linux centos  8G内存 4核
  二、测试场景
  1、内部测试环境:进入门列表,开门(由于开门是调用第三方接口,开门屏蔽了第三方门禁,做了一个假接口测试
  1)100个用户 1S上1vuser   5 min  30 min
  2)200个用户  1S上1vuser   5 min   30 min
  3)500个用户   1S上1vuser   5 min   30 min
  1-1:测试情况:
  1)响应时间平均在10s,事务通过率为99.9%,CPU高大60%,内存变化不大,未压测时程序占用内存已有5g。
  2)响应时间平均在20s,事务通过率为88%,CPU高60%,内存5g-6g,事务失败原因是connect timeout
  3)由于场景2出现大量connect timeout,调整一下lr的连接数和加多了一台压力测试负载机子,场景3依然出现大量connet timeout,内存占用达到90%,内存占用较大,但是场景2的事务通过率可大99%在调整后。
  4)同时使用top命令观察到java占用占用内存一直没有释放(后观察)
  1-2:测试结论:
  该系统占用内存较大,且java程序占用的内存没有释放。
  问题定位,向运营申请将系统内存降为4g,再进行压力测试,测试结果,该系统本身内存占用3g多,虽然内存不挺增加,但是系统并没有挂掉。
  2、uat测试环境: 进入门列表,真实调用第三方接口
  1)100个用户 1S上1vuser   5 min  30 min
  2)200个用户  1S上1vuser   5 min   30 min
  3)500个用户   1S上1vuser   5 min   30 min
  备注:根据实际测试情况调整并发用户数
  2-1测试情况:
  1)场景1压力上到100vuser时,系统挂掉,提示502bad gayway,503不能访问
  观察内存占用较大,
  二、问题定位
  压测真实的门禁接口,未上到100时挂掉,可以确认问题性能瓶颈在调用第三方接口,预估是在webservice请求第三方接口,太多的请求和保持导致线程和内存无法承受。
  方法:对第三方的webservice请求中每个请求都独立建立链接,吧webservice的请求做成连接池的形式。
  三、调优
  开发将门禁系统独立系统做成阿里云LBS负载均衡.3.5两台机子 内存分别为8g
  四、压测
  压测100vuser用户未挂,压测到200vuser挂掉了,内存占用分别都是4g左右,但是java占用的内存一直没有释放,问题定位是tomcat内存,下载jvm直接监控,发现内存一直蹦高,且未释放。(jvm机制内存使用达到多少会自动释放已停用的线程)
  五、调优
  tomcat大permgium由原来的502栈内存调高为1048g;清除系统缓存数据
  六、压测
  压测200没有挂掉,有台机子的内存可达95%,依然存在风险,但200vuser持续运行0.5h,系统并无发生崩溃。
  测试监控使用zabbix。
  七、调优措施:
  1)tomcat内存加大 2)加上开门列表缓存机制 3)负载均衡  4)定期清缓存