ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-04-28 20:04:59  阅读:364  来源: 互联网

标签:web java 数据库 连接数 报错 测试 oracle Jmeter 连接


首先介绍一下大概情况:在客户局域网内安装了一个应用系统,是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,java,数据库,连接数,报错,测试,oracle,Jmeter,连接
来源: https://www.cnblogs.com/wmxblog/p/16204245.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有