性能测试经典案例解析——远程培训系统
2021/03/03

远程培训系统的项目背景主要有以下特点:总体用户量大,达到30万级别;业务并发量大,部分业务估算用户量达到10万并发级别;业务处理实时性要求高,要求响应时间非常短;再就是业务处理可靠性要求高,系统一旦出现问题,就会给30万数量级的用户带来很大的困难、无法使用平台,再去组织这30万的用户去进行远程培训的代价非常之大。


系统架构情况如下:

 image.png


存在的问题主要有:

· 业务响应时间长。

· 业务处理失败率高。

· 用户提交数据丢失。

· 功能操作错误。



我们从时间分布、资源分布、异常信息三个方面去分析诊断。根据分析,总结出以下五大问题:前端程序问题、基础软件配置问题、软件架构问题、程序算法问题、部署运维问题。


前端程序问题现象及监控

前端页面响应时间过长。

通过HTTPWatch发现哪些请求处理时间过长,连接出现阻塞。

通过Web服务器资源监控发现带宽值达到极限,处理器资源利用率也较高。

通过其他服务器资源监控发现资源利用率较低。


前端程序问题分析诊断

主要是由于前端脚本文件、样式文件、图片文件等数量过多,造成首次访问连接数过多。

部分静态文件体积过大,未使用压缩算法造成数据传输量过大。


基础软件配置问题现象及监控

前端页面响应时间过长,部分写入业务处理操作失败率较高。

通过HTTPWatch发现哪些请求处理时间过长。

通过Web服务器、应用服务器资源监控发现处理器资源利用率也较高。


基础软件配置问题分析诊断

通过比对测试发现Web服务器缓存失效、Jetty线程池配置不合理。


软件架构问题现象及监控

系统登录操作响应时间过长。

通过在应用程序中加入相关时间监控日志,定位向Hazelcast内存数据库写入登录信息时间过长。

通过应用服务器、数据库服务器资源监控发现资源占用合理。


软件架构问题分析诊断

通过与开发人员讨论分析发现,采用同步架构写入数据库,导致写入请求量较大时写入速度明显减慢。


程序算法问题现象及监控(1)

作业提交操作响应时间过长。

通过在应用程序中加入相关时间监控日志,定位向内存数据库Hazelcast写入作业内容数据、向消息中间件写入作业属性数据信息时间过长。

通过应用服务器资源监控发现处理器资源占用较高。


程序算法问题分析诊断

通过与开发人员讨论分析发现,单线程负责完成内容数据、属性数据的处理,处理逻辑较多。


程序算法问题现象及监控(2)

课程学习功能错误,学习日志写入Hazelcast、Mongodb、MySQL等,各数据库学习日志统计数据不统一。

通过在应用程序中加入统计数据监控日志,发现程序算法设计存在问题,各数据库计算结果在高并发情况下容易出现误差。

通过各服务器资源监控发现资源使用在正常范围内。


程序算法问题分析诊断

通过与开发人员讨论分析发现,由于应用服务器多线程处理速度为秒级,应用服务器时间不统一,导致日志数据写入数据库时,数据会被多次计算。远程培训系统-部署运维问题现象及监控

个人门户首页操作响应时间过长。

通过在应用程序中加入相关时间监控日志,定位应用服务器处理时间过长。

通过应用服务器资源监控发现IO资源占用较高。


部署运维问题分析诊断

通过对占用IO资源的Java线程进行分析,发现Log4j日志相关线程进行了大量写入操作,发现其日志级别设置过高,写入数据量过大。


通过以上几个方面的诊断,就可以全面地排查出系统的性能问题了。