压力测试报错 CannotGetJdbcConnectionException

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容