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


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

    一、场景描述

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

    二、测试环境配置

    1、测试服务器配置

    测试配置
    经前面多轮配置测试及计数器观察分析(考试只为系统性能测试的一个块,前面还有做其它模块的性能测试。当然如果单独测考试系统,也应根据测试结果数据去进行参数调优。),最后确认程序、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错误。

  • 相关阅读:
    MyBatis基础面试题
    MyBatis面试题
    Spring MVC @RequestBody自动转JSON HTTP415错误解决方法
    【GDKOI 2016】地图 map 类插头DP
    【Codechef FRBSUM】【FJOI2016】【BZOJ4299】【BZOJ 4408】 可持久化线段树
    【NOI2005】聪聪和可可 概率与期望 记忆化搜索
    【bzoj 1076】【SCOI2008】奖励关
    BZOJ 1009 HNOI 2008 GT考试 递推+矩乘
    BZOJ 3809 Gty的二逼妹子序列
    BZOJ 2821作诗(Poetize) 分块
  • 原文地址:https://www.cnblogs.com/nanaheidebk/p/10039819.html
Copyright © 2020-2023  润新知