生产有家医院系统报错,只看报错信息就是mapper执行sql时报错。服务受阻,无法正在运行。

但sql没有任何语法错误,只能猜想是否连接数据库有问题,通过telnet ip 端口 确认能连上db服务器,再猜想应用层面配置问题?数据库连接池获取不到可用连接?

打开配置文件查看

spring.datasource.initialSize=187
spring.datasource.minIdle=187
spring.datasource.maxActive=100

这个配置有点儿傻眼,直觉告诉我minIdle和initialSize相等,那不就等于所有连接都闲置但不能用么?但因为是直觉(实际上完全没理解这个minIdle的含义),对于做技术的人得用技术说话才是,还是默默打开搜索引擎看看druid这些配置项什么意思。

maxWait -1 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxActive 8 连接池最大活跃连接数量,当连接数量达到该值时,再获取新连接时,将处于等待状态,直到有连接被释放,才能借用成功
minIdle 0 连接池最小空闲数量
initialSize 0 初始化数据源时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
keepAlive false 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。实际项目中建议配置成true

这个是搜了网上配置说明,但还是一头雾水,  连接池最小空闲数量。什么意思?什么算空闲?在池里创建了的连接,但没有被使用的连接么?那如果空闲连接数小于minIdle会怎么样呢?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐