真实性能测试案例之性能分析与报告

怎么做性能测试已经在专题文章《系统性能测试及调优》给大家分享过了。今天主要跟大家分享一个曾经所做的真实性能测试的案例,主要为其中性能测试分析报告过程部分,希望能对你以后怎么做性能分析和报告有所帮助。这个案例的测试目的为:在线考试为“XX平台”中的一个重要模块,根据目前业务的需要,需要测试在线考试能否支持100的并发量。

一、场景描述

采取逐步增加用户数(每10分钟增加用户数20人)对在线考试进行并发操作,达到100人为止;当并发数达到100后则继续运行一段时间(30分钟)。

二、测试环境配置

1、测试服务器配置

测试配置
经前面多轮配置测试及计数器观察分析(考试只为系统性能测试的一个块,前面还有做其它模块的性能测试。当然如果单独测考试系统,也应根据测试结果数据去进行参数调优。具体哪些是性能因子,可以参看部落中《MySQL的My.ini配置说明》《Tomcat 性能的测试》),最后确认程序、tomcat、JVM及MySQL最佳参数配置如下:2、服务器软件配置

程序参数设置

jdbc.minPoolSize=50
jdbc.maxPoolSize=1500
jdbc.initialPoolSize=50
jdbc.maxIdleTime=60

tomcat server.xml参数配配置

maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"  maxIdleTime="60000" />
maxKeepAliveRequests="1" redirectPort="443"  />

JVM参数配置:

-XX:PermSize=64M
-XX:MaxPermSize=128m
-Xms512m
-Xmx1024m

MYSQL参数配置:

max_connections=1500
thread_cache_size=128
back_log=200

三、测试结果分析

1、当并发数为60后,发生500服务器错误,通过计数器监控检查为数据库连接数达到最大值1499

1)并发数与服务器出现错误的关系视图

并发出错

2)数据库线程连接数与出现错误的关系视图

数据库连接数

通过上面两图表分析:在并发数逐步加大过程中发生瓶颈,瓶颈原因为数据库线程连接数达到饱和值1499。

2、调整MYSQL的max_connections=11500后进行测试

调整参数后仍发现mysql的线程数达到1499后就不能继续上升了。确认原因:windows32位系统,一个进程中可用的内存空间只有2G,而默认情况下一个线程的栈要预留1M的内存空间,所以理论上一个进程中最多可以开2048个线程,但是内存不可能完全拿来作线程的栈,所以实际数目要比这个值要小。所以1499则为该测试环境的线程数峰值。

3、根据前面压力结果,调整并发数为40进行测试

发现当提交试卷数达到1300左右时,数据线程仍然达到1499,最后再次提交试卷发生服务器500错误。都是在发现错误后停止测试(并发40时是一发现500错误现象则停止运行,所以失败数为1),考试流程各事务通过量统计情况如表:

测试结果
根据上表分析:当短时间内(如30分钟),学生考试提交的试卷次数超过1300左右,当其它学生提交试卷时或进行其它与数据库相关操作时,会出现服务器500错误。

四、测试结论及建议

测试结论

平台在线考试不支持100的并发数。

性能瓶颈为在一段时间内(如30分钟)学生提交考试次数超过1300左右后,数据连接数达到该服务器允许的峰值1499,导致进行考试以及其它操作时出现500服务器错误。

在该配置服务器环境下,MySQL的max_connections=1500为数据线程数最大设置,超过后并不起作用。

建议

A、尽可能的优化后台处理程序,降低考试业务所需的数据库连接数。

B、在做测试数据过程中发现,当安排考试的以院系为单位(院系用户较多,如2000个),点击“启用”按钮无响应,实际后台已经在做分配考试处理。因此建议优化该功能,如点击启用考试应及时改变状态,同时后台做分配处理。

C、后台分配考试处理方式过慢,建议进行优化,缩短处理时间。



留言