记录一次压测性能优化
1.背景
当前测试系统新增测试需求,单个用户需要同时从系统中获取10个资源的元数据,元数据来源是根据素材的唯一id从Hive数据平台中获取数据内容属于json格式的响应数据,整个响应实体非常之大,当前测试web平台所用的接口属于HIVE数据平台下cmapi代理接口下的web应用平台后台封装的三级代理接口,其中响应的内容中,需要和第三方交互的数据,存到redis中。
2.测试过程
Jmeter模拟整个请求,发起压测,按实际需求,首先模拟循环发送10个请求,压测10min,
再模拟10个线程请求,循环10次,压测10min,在测试过程中,出现了报错以及web平台down掉,报错内容为{"code":"404","msg":"can't get any info from hive"}和“502 Bad Gateway”等错误,为了验证是否是真的不存在此id资源,在压测结束后,我们单独来请求此资源,结果是能正常返回数据内容的,从另外的方面来分析,hive数据平台的压力应该不至于连10个线程的压力也支撑不起从代理层面来分析,也应该是hive > cmapi >= web才合理,那么为什么会出现这样的问题?
3.探索分析过程
根据出错第一指南,首先是查找请求日志,从日志中获得的反馈是一个redis错误,具体的错误内容现在已经不太记得,后续的解决方案是经过研发分析是保存到redis中的这部分数据输出了太多冗余日志,造成开启句柄量过多造成的资源浪费,后续修改了再次测试,请求量和并发量有了一定上升,所以系统测试的过程中,性能测试是非常有必要的,在未到达用户层面时就将问题暴漏出来,是节约企业成本的最佳实践指南。
欢迎关注,后续继续分享测试过程中的小案例