压力测试时报错如下,数据库链接用的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次。
截图如下:
结果程序报错如上,且请求成功率很低,截图如下
以下报错非常明显,是获取链接超时而报错。错误的原因可能是连接没有及时关闭被回收,或者超时。
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就好了。