document.write("");

SpringBoot mysql 异常:No operations allowed after connection closed.

前提:

1. db mysql

2. 使用的hibernate 连接池

如果前提不符,那么解决方案或许也不适用

 

这个问题,老生常谈了,

原因为连接池使用无效的连接去访问DB

无效的原因为:mysql超时后主动关闭连接,但是连接池并不会主动清理失效的连接,所以还是会存在使用无效连接去访问DB的情况

所以新增配置:

 

spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800

 

  

参数说明:

max-idle:连接池中的最大空闲连接数

max-wait:连接池在等待返回连接时,最长等待多少毫秒再抛出异常

min-idle:连接池里始终应该保持的最小连接数

initial-size:连接池启动时要建立的连接数

validation-query:连接池里的连接返回给调用者或连接池时,要执行的验证的SQL 

test-on-borrow:从连接池中借用连接时是否要进行测试

test-while-idle:连接空闲时是否要进行测试

time-between-eviction-runs-millis:在两次空闲连接验证、弃用连接清理和空闲池大小调整之间睡眠的毫秒数

 

另外:

查询mysql的wait_timeout:    

show global variables like '%timeout';

  

查看 mysql服务器的所有用户的连接(前提为root)

show processlist;(前100条)

show full processlist;(全部)

 

study:

1. idle:

the devil makes work for idle hands

2. wait:

Wait for me!

3. initial:

Just write your initials

姓名字母即可

4. validation:

To testanalyze and validate business logic

测试分析验证业务逻辑

5. eviction:

He claimed damages for unlawful eviction

要求非法驱逐作出赔偿

6. millisecond(millis):

 

posted @ 2022-11-28 16:23  人间春风意  阅读(639)  评论(0)    收藏  举报