最近公司使用spring boot-druid-dubbo的模式开发业务,但是在线下进行实际测试时,发现mysql数据库连接数在一段时间后会被占满,顿时一脸懵逼.

经过测试,连接不释放问题是由于在自己本机对程序进行强制关闭导致的(之前做业务时,直接关闭tomcat,会自动释放与数据库的连接),强制关闭,数据库侧是不知道你程序已经关闭的,所以连接会一直保持,直到到达数据库默认超时时间后连接自动释放。

Spring boot本身是存在shutdown的,经过测试其shutdown方法,关闭程序后数据库连接可以释放。

  shutdown配置方法如下:

1)      在pom.xml中增加如下配置:

   <!--spring boot 应用关闭的前提配置 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2)      Application.properties中增加:

##spring boot应用关闭配置项,关闭命令(必须为post请求):curl -X POST host:port/shutdown
#启用shutdown
endpoints.shutdown.enabled=true
#禁用密码验证
endpoints.shutdown.sensitive=false
3)      关闭命令:

curl -X POST host:port/shutdown
 

必须为post方式去调用!!!

使用该方式进行spring boot的关闭,未出现连接未释放问题。
 

GitHub 加速计划 / druid / druid
6
4
下载
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:4 个月前 )
933dee04 - 14 天前
3246166f - Add constructor with SQLParserFeature support to SparkStatementParser - Fix SQLParserUtils to pass features parameter to SparkStatementParser, CKStatementParser and StarRocksStatementParser 23 天前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐