【Druid】数据库连接超时

现象:
接口请求,10秒钟超时,看了一下,是sql查询耗时太长了,数据还没来得及返回,连接就断开了。
连接断开,上层应用直接报错。。

这些问题,都是。。。知道答案后,就觉得,emmm,好简单。知道答案前,…tmd, 这啥玩意儿。。。。

直接说答案吧:
数据库连接超时,那就配置超时时长,准确地说是 druid 的超时时长。。。
要设置 druid 的 connectTimeout 、socketTimeout 这两个配置项,
嗯。单这样说,有点。。。

一份druid 配置

druid:url: jdbc:mysql://10.12.1.9:3306/student?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueusername: usernamepassword: passwordxxxxuseSSL: falseinitial-size: 50min-idle: 50max-active: 200connectTimeout: 600000  #1.2.12版本需要单独配置才生效socketTimeout: 600000   #1.2.12版本需要单独配置才生效

有了配置,不够,需要在代码里面解析配置
于是要写一个:
DruidProperties.java

import org.springframework.boot.context.properties.ConfigurationProperties;/**
* druid
*/
@ConfigurationProperties(prefix = "druid")
public class DruidProperties {private String url;private String username;private String password;private int initialSize;private int minIdle;private int maxActive;private long maxWait;private String validationQuery;private int connectTimeout;private int socketTimeout;private boolean testOnBorrow;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getInitialSize() {return initialSize;}public void setInitialSize(int initialSize) {this.initialSize = initialSize;}public int getMinIdle() {return minIdle;}public void setMinIdle(int minIdle) {this.minIdle = minIdle;}public int getMaxActive() {return maxActive;}public void setMaxActive(int maxActive) {this.maxActive = maxActive;}public long getMaxWait() {return maxWait;}public void setMaxWait(long maxWait) {this.maxWait = maxWait;}public String getValidationQuery() {return validationQuery;}public void setValidationQuery(String validationQuery) {this.validationQuery = validationQuery;}public int getConnectTimeout() {return connectTimeout;}public void setConnectTimeout(int connectTimeout) {this.connectTimeout = connectTimeout;}public int getSocketTimeout() {return socketTimeout;}public void setSocketTimeout(int socketTimeout) {this.socketTimeout = socketTimeout;}public boolean isTestOnBorrow() {return testOnBorrow;}public void setTestOnBorrow(boolean testOnBorrow) {this.testOnBorrow = testOnBorrow;}
}

还有 DruidAutoConfiguration.java

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;import javax.sql.DataSource;
import java.sql.SQLException;/*** Created by chu on 2017/3/2.*/
@Configuration
@EnableConfigurationProperties(DruidProperties.class)
@ConditionalOnClass(DruidDataSource.class)
@ConditionalOnProperty(prefix = "druid", name = "url")
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
public class DruidAutoConfiguration {@Autowiredprivate DruidProperties properties;/*** 获取数据源* @return DataSource*/@Beanpublic DataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(properties.getUrl());dataSource.setUsername(properties.getUsername());dataSource.setPassword(properties.getPassword());if (properties.getInitialSize() > 0) {dataSource.setInitialSize(properties.getInitialSize());}if (properties.getMaxActive() > 0) {dataSource.setMaxActive(properties.getMaxActive());}if (properties.getMaxWait() > 0) {dataSource.setMaxWait(properties.getMaxWait());}if (properties.getMinIdle() > 0) {dataSource.setMinIdle(properties.getMinIdle());}if (properties.getValidationQuery() != null) {dataSource.setValidationQuery(properties.getValidationQuery());}if (properties.getConnectTimeout() > 0) {dataSource.setConnectTimeout(properties.getConnectTimeout());}if (properties.getSocketTimeout() > 0) {dataSource.setSocketTimeout(properties.getSocketTimeout());}dataSource.setTestOnBorrow(properties.isTestOnBorrow());try {dataSource.init();} catch (SQLException e) {throw new RuntimeException(e);}return dataSource;}/*** 获取ServletRegistrationBean* @return ServletRegistrationBean*/@Beanpublic ServletRegistrationBean druidServlet() {ServletRegistrationBean druidServletRegistration = new ServletRegistrationBean(new DruidStatViewServlet());druidServletRegistration.addInitParameter("allow", "127.0.0.1");druidServletRegistration.addUrlMappings("/druid/*");return druidServletRegistration;}}

一开始,配置文件写到了

spring:datasource:druid:connectTimeout: 600000  #1.2.12版本需要单独配置才生效socketTimeout: 600000   #1.2.12版本需要单独配置才生效

然后配置死活不生效。。。

呃,,,, 所以配置文件,和解析类的前缀一定要匹配才行噢! 不熟悉的同学,其实很容易踩坑。。。。

我就踩了好多次。。。emmmm
踩坑记录:单独配置:socketTimeout: 600000不生效,需要两项同时配置:

      connectTimeout: 600000  #1.2.12版本需要单独配置才生效socketTimeout: 600000   #1.2.12版本需要单独配置才生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF工具下载(1)----随波逐流

为什么要写这个博客喃,因为随波逐流每隔一段时间就会更新,要下载最新版本才能用,但是每次都会有点麻烦,所以写一个博客记录下。 1.进入官网,点击 2.进入城通网盘 3.进入编码工具 4.点击最新版本的随波逐流就下载了&am…

在Mac主机上连接Linux虚拟机

前言 最近醉心于研究Linux,于是在PD上安装了一个Debian Linux虚拟机,用来练练手。但是每次在mac和Linux之间切换很是麻烦,有没有一种方法,可以在mac终端直接连接我的虚拟机,这样在mac终端上就可以直接操控我的Linux虚…

咸鱼之王_手游_开服搭建架设_内购修复无bug运营版

视频演示 咸鱼之王_手游_开服 游戏管理后台界面 源码获取在文章末尾 源码获取在文章末尾 源码获取在文章末尾 或者直接下面 https://githubs.xyz/y28.html 1.安装宝塔 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &…

(2024,IXC2-4KHD,LVLM,动态图像分割,高分辨率图像处理)InternLM-XComposer2-4KHD

InternLM-XComposer2-4KHD: A Pioneering Large Vision-Language Model Handling Resolutions from 336 Pixels to 4K HD 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方…

【云计算】云数据中心网络(二):弹性公网 IP

云数据中心网络(二):弹性公网 IP 1.什么是弹性公网 IP2.弹性公网 IP 的类型2.1 多线 EIP2.2 任播 EIP2.3 单线静态 EIP2.4 精品 EIP2.5 识别不同类型的 IP 的地址 3.弹性公网 IP 功能3.1 自带公网 IP 地址上云3.2 尽力找回公网 IP 地址3.3 连…

【学习心得】神经网络知识中的符号解释②

我在上篇文章中初步介绍了一些神经网络中的符号,只有统一符号及其对应的含义才能使我自己在后续的深度学习中有着一脉相承的体系。如果对我之前的文章感兴趣可以点击链接看看哦: 【学习心得】神经网络知识中的符号解释①http://t.csdnimg.cn/f6PeJ 一、…

3. 安装arrach结构的Mysql

提示:arm的centos上面安装arrach结构的Mysql 文章目录 前言一、查看已经安装过的并卸载mysql二、创建mysql用户组1.设置用户组2. 安装3.设置启动4.查看密码5.修改登录密码6.授权7.修改连接8.设置参数 常见问题排查1. 启动失败查看:2. 用户操作3. 踩坑解决…

Leetcode刷题-字符串详细总结(Java)

字符串 字符串可能在算法处理上面和数组是类似的,但是String和数组的数据结构还是有一些不一样的 1、反转字符串 344. 反转字符串 - 力扣(LeetCode) 双指针的经典应用,两个指针同时向中间移动 public void reverseString(char[…

fail2ban检查配置自动黑名单策略

安装 fail2ban 更新系统包索引(以 Ubuntu/Debian 为例): sudo apt update安装 fail2ban: sudo apt install fail2ban基本配置 复制默认配置文件: fail2ban 的默认配置文件位于 /etc/fail2ban/jail.conf。为避免升级软件…

扣子Coze插件教程:如何使用Coze IDE创建插件

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

爬虫 BeautifulSoup模块

爬虫 BeautifulSoup模块 【一】介绍 【1】说明 BeautifulSoup库是python的一个第三方库,主要用于处理HTML和XML文档他提供了一些简单的、python式的函数来解析、导航、搜索以及修改分析树,使得从网页抓取的数据变得简单高效BeautifulSoup自动将输入文…

华大基因获证:氧化三甲胺检测试剂助力心血管疾病早期干预

近日,深圳华大基因股份有限公司旗下的全资子公司华大生物科技(武汉)有限公司获得两项医疗器械注册证(注册号:鄂械注准20232404470和鄂械注准20232404469)。该试剂是国内首个获批二类注册的,基于…

2024第十五届蓝桥杯 Java B组 填空题

声明:博主比较菜,以下均为个人想法。解决方法仅供参考。欢迎大家一起讨论交流! 第一题: 题目: (简洁版)从小到大排列是20或24倍数的正整数,前10个数依次是:”20 24 40 …

L1-047 装睡

你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们…

多线程(50)如何实现自旋锁

自旋锁是一种忙等锁,当线程尝试获取锁而锁已被其他线程持有时,该线程会在一个循环中不断尝试获取锁,直到成功为止。与传统的互斥锁相比,自旋锁不会使线程进入睡眠状态,因此如果等待锁的时间非常短,自旋锁的…

LWIP2.1.3+UCOSIII3.08的系统接口arch.c修改

自己的笔记不保证正确 err_t sys_mbox_trypost_fromisr(sys_mbox_t *mbox, void *msg) {BaseType_t ret;BaseType_t xHigherPriorityTaskWoken pdFALSE;LWIP_ASSERT("mbox ! NULL", mbox ! NULL); // LWIP_ASSERT("mbox->mbx ! NULL", mbox->mbx …

C#WPF的XAML中String回车换行

本文实例演示C#WPF的XAML中String回车换行。 在XAMl中回车换行与C#中的不同,使用\r\n不再起作用。 首先使用String需要先添加引用 xmlns:sys="clr-namespace:System;assembly=mscorlib" 回车使用
或者 换行使用
或者 同时使用时需要添加 xml:…

mac ip 域名 三者之间的关系

mac ip 域名 三者之间的关系 在计算机网络中,MAC地址(Media Access Control Address)、IP地址(Internet Protocol Address)和域名(Domain Name)是三个不同的概念,它们之间有以下关系…

Linux进阶篇:文件传输工具curl命令详解

文件传输工具Linux curl命令详解 一 curl命令介绍 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。…

package.java文件的作用

你查看springboot的源码,有很多类都有这个文件,在idea不能创建,因为不支持这种命名,只能用记事本创建后复制都项目中。 主要应用是给类添加正常,或者把公用的注解都放到这里,常量不合适,作用范…