springboot druid配置datasource启动初始化数据库连接-尊龙官方平台

springboot druid配置datasource启动初始化数据库连接

el/2024/3/25 18:20:19

1、问题场景:

1.1、服务在启动之后的第一笔或者几笔请求,处理时间较长,对于调用方来说超时,引发技术保底。

1.2、数据库连接信息配置错误,项目启动过程中却不产生任何异常,等到实际功能用到数据库了才抛出异常。
2、问题分析:
2.1、调用发系统通过http请求调用服务,设置超时时间为1s,超时时间过短,调整为3s;
2.2、应用启动之后的初始几笔请求处理时间过长,超过1s,跟踪日志发现在init-datasource中等待时间占用过多;
2.3、经过本地测试发现,在应用启动之后,在jvisualvm中查看mbeans中的druid.pool中的读写datasource的属性,启动之后的creatcount为0。在有请求进入之后才初始化了配置文件中的init连接数,导致了线上的问题;
3、尊龙官方平台的解决方案:在数据库配置文件中配置读写datasource的bean中增加init-method=init的配置即可。druid官方文档中介绍,如果想要在项目启动的时候初始化配置的数据库连接数,需要显示配置或者调用init-method。

具体实现,如下图:

你可以在bean中增加init-method=init的配置,

也可以创建 datasource 后,显示的调用 init 方法。

 附 init 方法源码:

    public void init() throws sqlexception {if (inited) {return;}final reentrantlock lock = this.lock;try {lock.lockinterruptibly();} catch (interruptedexception e) {throw new sqlexception("interrupt", e);}boolean init = false;try {if (inited) {return;}initstacktrace = utils.tostring(thread.currentthread().getstacktrace());this.id = druiddriver.createdatasourceid();if (this.id > 1) {long delta = (this.id - 1) * 100000;this.connectionidseed.addandget(delta);this.statementidseed.addandget(delta);this.resultsetidseed.addandget(delta);this.transactionidseed.addandget(delta);}if (this.jdbcurl != null) {this.jdbcurl = this.jdbcurl

http://www.ngui.cc/el/5127494.html

相关文章

帝国cms empirecms 设置https后网页排版乱了飞了的解决方法

帝国cms empirecms 今天设置了https后网页排版都乱了飞了, 查询得知 帝国cms empirecms 从 7.5版本后开始支持 https 自动识别, 但为什么会飞了呢,因为之前生成的页面是http的, 所以,解决方法就是:把所有…

json 转日期出错,jsonarray.tocollection 时间总是转化为当前时间

最近用到了json字符串转实体类,转集合的功能, 主要代码如下: /*** json 字符串转集合* * @author lipw* @date 2017年5月10日下午6:08:17* @param jsonstring* @param pojocalss* 集合中的类* @return*/public static list jsontolist(strin…

squid 搭建代理记录

服务器环境:阿里云香港ecs centos release 6.8 (final) 本地环境:macos 10.12.6 (16g1510) 配置过程参考:使用squid搭建centos7代理服务器上网 squid介绍 squid是linux自带的代理软件,与其它代理软件如apache、socks等相比,下载安装简单,配置灵活,支持缓存和多种协议…

金蝶ui operamasks-ui 下拉列表 omcombo 获取选中列表项的文本 text 方法

金蝶ui operamasks-ui 下拉列表 获取选中列表项的文本 text 方法 它的实现方式其实是在你定义的存储值的 input 后面紧跟着一个 input 用于显示 选项 option 的 text 值,所以通过以下方法就可以获取到: $("#buildingid").next().val() 文章…

csdn前1000名博主

博主简介stpeace排名:1 原创:2166 粉丝:7180 积分:181660 等级:10stpeace的专栏中国本博客供大家交流,欢迎各抒己见。博文中的内容禁止用yuanmeng001排名:2 原创:5286 粉丝:10660 积分:170616 等级:10袁萌专栏无穷小微积分倡导者–北大教授null老师yjclsx排名:3 原…

whois 查询违法?

参考链接:whois 查询违法 在阿里云可以看到:域名隐私保护服务暂停通知 根据icann《通用顶级域名注册数据临时政策细则(temporary specification for gtld registration data)》 和欧盟《通用数据保护条例》合规要求,自2018年5月25日起, 阿里云的whois信息公开查询结果中…

帝国cms 主导航条下拉菜单功能实现,模板功能扩展

主导航条下拉菜单样式: 具体应用请查看我的个人网站:无知人生 实现步骤 1、在公共模板变量》页面头部模板中使用以下标签来加载菜单项 [listshowclass]0,13,0,0[/listshowclass] 13对应的是标签模板》新建的一个模板 2、新建标签模板 页面模板内容(*)
  • 帝国cms 单页面栏目管理

    在建设网站的时候,有可能一个栏目(也就是导航菜单中的一个菜单)就只有一个页面,那么在使用帝国cms时怎么基于栏目管理的功能来创建呢?这里记录一下。 1、创建栏目,基本属性 内部栏目,不需要是终…

    帝国cms7.5搜索模板支持动态标签调用的方法

    经过测试,针对7.2版本的方法,在7.5版本中仍然可用: 打开 /e/search/result/index.php 文件 找到require("../../class/connect.php"); require("../../class/db_sql.php"); require("../../data/dbcache/class.php…

    php 获取调用者的方法和行数(查看堆栈调用)

    php 获取调用者的方法和行数(查看堆栈调用) $array debug_backtrace(); foreach ($array as $row) {var_dump($row[file] . : . $row[line] . 行,调用方法: . $row[function]); }
    网站地图