Java教程

web项目压力并发测试遇到的问题,Jmeter,java,proxool,oracle,安全防护软件

本文主要是介绍web项目压力并发测试遇到的问题,Jmeter,java,proxool,oracle,安全防护软件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先介绍一下大概情况:在客户局域网内安装了一个应用系统,是web项目,近期需要需要提供压力并发测试报告,要求是:非服务器电脑上测试,单个用户持续访问5分钟,100用户并发访问5分钟;结果要求在样本足够多(万为单位)的情况下,异常率小于1%,且平均值大于100(还不懂平均值是啥)。

项目使用JDK+Tomcat+SSH来开发的,于是使用Apache Jmeter进行测试,遇到以下几个问题:

1、服务器日志报错:Caused by: java.sql.SQLException: We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10

  百度:https://www.matools.com/blog/190118426 

  simultaneous-build-throttle:  这是我们可一次建立的最大连接数。那就是新增的连接请求,但还没有可供使用的连接。由于连接可以使用多线程,在有限的时间之间建立联系从而带来可用连接,但是我们需要通过一些方式确认一些线程并不是立即响应 连接请求的,默认是10。

  解决方案:

  在proxool.xml中增加: 

  <simultaneous-build-throttle>20</simultaneous-build-throttle> 

  默认 

  <simultaneous-build-throttle>10</simultaneous-build-throttle>

   本项目是在applicationContext-Hibernation.xml中配置的数据库连接,具体参数是:(调到20后又报错,最后调到了50)

 <!-- 可一次建立的最大连接数(默认10个) -->
 <property name="simultaneousBuildThrottle" >
     <value>50</value>
 </property>

 

 

 

 2、报错:日志报错信息:2022-04-26 14:09:52,035 ERROR JDBCExceptionReporter:234 - Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186647040)(ERR=12518)(ERROR_STACK=(ERROR=(CODE=12518)(EMFI=4))(ERROR=(CODE=12560)(EMFI=4)))),

并且在连数据库连不上:

 

 

 

百度:网上有的说是连接数据库的SID不对,但是本项目是正常访问一会让后报错,于是pass调

   还有的说是数据库连接数的问题:https://blog.csdn.net/qq_41871076/article/details/115206306

解决方案:断开其中一个数据库连接,修改Oracle数据库的连接数:   

    cmd进入数据库:
    sqlplus sys/密码@IP/实例名 as sysdba

    查看processes值:
    Show parameter processes;
    Select count(*) from v$process;

    修改语句如下:
    分别输入:
    alter system set processes=1000 scope=spfile;
    alter system set sessions=1105 scope=spfile;

    

 

3、xml中数据库最大连接数:Thread Max 55,但已超过55,于是修改配置文件:从55改为1000,按需修改。

<bean id="dataSource"
        class="org.logicalcobwebs.proxool.ProxoolDataSource">
        <property name="driver">
            <value>oracle.jdbc.driver.OracleDriver</value> 
        </property>
        <property name="driverUrl">
                <value>jdbc:oracle:username/pasword@ip:1521:orcl</value> --orcl即上面说的SID
        </property>
        <property name="user">
            <value>username</value>
        </property>
        <property name="password">
            <value>password</value>
        </property>
        <property name="alias">   
            <value>temp</value>   
        </property>
 
        <!-- 最少保持的空闲连接数 (默认5个)-->
        <property name="prototypeCount">
            <value>5</value>
        </property>
 
        <!-- 最大连接数 (默认15个)-->
        <property name="maximumConnectionCount">
            <value>1000</value>
        </property>
 
        <!-- 最小连接数 (默认5个) -->
        <property name="minimumConnectionCount">
            <value>5</value>
        </property>
        
         <!-- 可一次建立的最大连接数(默认10个) -->
        <property name="simultaneousBuildThrottle" >
             <value>50</value>
        </property>
    </bean>

4、最后一个问题也是困扰最久,耗时最长的一个问题:Jmeter做测试,脚本里报告报错,访问数量在1~200条不等后,就报错:

Response message: Non HTTP response message: connect timed out

于是就开始了循环往复的重启tomcat和数据库,甚至重启服务器,仍然是几条后就报错,于是就又查了两个方法,修改服务器注册表修改TCP和Jmeter运行脚本的连接数和响应时间:链接如下:

  1) Windows 设置注册表TCP最大连接数和等待超时配合JMeter并发压测:https://blog.csdn.net/boonya/article/details/105700988

  2)Jmeter性能测试请求超时:目前遇见有三种情况:http://t.zoukankan.com/tarzen213-p-12056400.html

按照要求修改后,仍然报错

这时在本地安装Jmeter测试本地的程序,并发访问还算满足要求,于是想到了服务器的环境问题,于是将所有的安全防护软件暂时关闭,这时一切都正常了。

至此,压力测试也是一种具有破坏性的攻击测试,于是,做压力测试时可以先关闭,但是记得及时开启哦。

这篇关于web项目压力并发测试遇到的问题,Jmeter,java,proxool,oracle,安全防护软件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!