Java 压力测试以及性能相关问题

压力测试报错 CannotGetJdbcConnectionEx

2019-06-16  本文已影响0人  liuyangcc

压力测试时报错如下,数据库链接用的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就好了。

上一篇下一篇

猜你喜欢

热点阅读