美文网首页Java 压力测试以及性能相关问题
压力测试报错 CannotGetJdbcConnectionEx

压力测试报错 CannotGetJdbcConnectionEx

作者: liuyangcc | 来源:发表于2019-06-16 17:36 被阅读0次

    压力测试时报错如下,数据库链接用的Druid

    Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 10, active 19, maxActive 30, creating 0, runningSqlCount 4 : select
         
        id, animal_id, user_id, adopt_status, adopt_time, del_flag, create_time, create_user, 
        update_time, update_user
       
        from adopt_record
         
           
         WHERE (  del_flag = ? )
    

    今天正好在写一个接口,测试并发情况,工具是Jmeter,先用的是一个客户在0.5秒内发请求50次。

    截图如下:


    0.5秒内50次请求

    结果程序报错如上,且请求成功率很低,截图如下


    summary report

    以下报错非常明显,是获取链接超时而报错。错误的原因可能是连接没有及时关闭被回收,或者超时。

    com.alibaba.druid.pool.GetConnectionTimeoutException
    

    一开始以为是连接没有被关闭回收,后来想想代码其实写的很简单,不应该出现这样的问题。
    后来看了配置文件就懂了

    spring.datasource.druid.initial-size=10
    spring.datasource.druid.max-active=30
    spring.datasource.druid.min-idle=5
    spring.datasource.druid.max-wait=10
    

    是在设置max-wait的时候,设置的太严格了,因此很容易就超时。

    最终,把max-wait设置成300就好了。

    相关文章

      网友评论

        本文标题:压力测试报错 CannotGetJdbcConnectionEx

        本文链接:https://www.haomeiwen.com/subject/dovgfctx.html