我们是 springboot1.x 的应用 用的自带的数据库连接池就是 tomcat,数据库用的是 oracle,现在发生了一些奇怪的事就是初始化数据库连接池的时候可能会卡在创建连接那一步,但是重启可能就好了,也就是说不是必然出现的,之前不知道是卡在数据库创建连接这里,后来是看了 jstack 才知道,所有线程都在等着创建连接,现在临时的解决方案是项目启动后我主动拿一次连接并打印,如果能拿到就没问题,如果不能拿到就重启,以此来判断项目是否正常启动

下边是主动拿连接时候的堆栈日志

"main" #1 prio=5 os_prio=0 tid=0x00007f4868009800 nid=0x2800 runnable [0x00007f486ebad000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.FileDispatcherImpl.read0(Native Method)

at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)

at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)

at sun.nio.ch.IOUtil.read(IOUtil.java:197)

at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)

- locked <0x0000000790329aa0> (a java.lang.Object)

at oracle.net.nt.TimeoutSocketChannel.read(TimeoutSocketChannel.java:144)

at oracle.net.ns.NIOHeader.readHeaderBuffer(NIOHeader.java:82)

at oracle.net.ns.NIOPacket.readNIOPacket(NIOPacket.java:252)

at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:118)

at oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)

at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)

at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)

at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)

at oracle.jdbc.driver.OracleDriver.connect$original$HFi5AXBw(OracleDriver.java:691)

at oracle.jdbc.driver.OracleDriver.connect$original$HFi5AXBw$accessor$yuxZSb5R(OracleDriver.java)

at oracle.jdbc.driver.OracleDriver$auxiliary$nsJu79Fa.call(Unknown Source)

at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java)

at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)

at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)

at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:739)

at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:671)

at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483)

at org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:154)

at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)

- locked <0x00000006c8e3ae18> (a org.apache.tomcat.jdbc.pool.DataSource)

at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)

at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131)

at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)

at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

at

应该是卡在了 sun.nio.ch.FileDispatcherImpl.read0 这里,看样子是在等待读数据?是数据库的问题还是连接池的问题,或者是驱动的问题,现在我不知道该怎么继续排查了,有没有大神给点建议,万分感谢

java tomcat数据库连接池,tomcat 数据库连接池拿不到连接相关推荐

  1. 如何在Tomcat中设置JNDI数据库连接池-Spring教程示例

    在Spring和Tomcat中设置JNDI数据库连接池非常容易. Tomcat服务器文档提供了有关如何在Tomcat 5.6或7中设置连接池的足够信息.在这里,我们将结合使用Tomcat 7和Spri ...

  2. tomcat7 mysql 连接池_Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

    Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 ...

  3. java中常用的连接池_java数据库连接池

    编写标准的数据源(规范) Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口.这样应用程序可以方便的切换不同厂商的连接池! 常见的 ...

  4. java 数据库连接池 实例_java数据库连接池和数据库连接示例

    import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mc ...

  5. spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池

    Druid是Java语言中最好的数据库连接池,这话不是我说的,是Druid官方文档自己这样描述的,这是何等的自信! 连接池的作用,跟线程池的作用大同小异,都是为了减少频繁的创建销毁连接IO,提升性能. ...

  6. java jdbc close原理_JDBC数据库连接池原理

    JDBC是java数据库连接的简称.它是一种用于实行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成.其相关的API都在java.sql.*包下 ...

  7. Java Web 03 — JDBC_02(数据库连接池_C3P0_Druid、JdbcTemplate)

    文章目录 六:数据库连接池 6.1 概念 6.2 c3p0 6.3 Druid 6.4 DBCP(Apache) 6.5 DBUtils(快速创建对象,并以集合形式返回) 七.Spring JDBC ...

  8. mysql数据库连接池_MySql数据库连接池

    1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的 ...

  9. 详解 Tomcat 的连接数与线程池

    原文出处:编程迷思 前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文 ...

最新文章

  1. 基于数据库数据增量同步_基于canal实现分布式数据同步
  2. cplex学术版安装
  3. NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试
  4. MySQL数据库基本的“增删改查”操作 -《狗嗨默示录》-
  5. 拓扑排序最长链-P3119 [USACO15JAN]草鉴定Grass Cownoisseur
  6. 多线程设置操作时间间隔_听说,有位Java程序员学完这59道多线程面试题之后,直接面上阿里...
  7. Python爬虫 Day 3
  8. IPLAT62--新增
  9. java cmd 进程_关闭CMD进程-JAVA
  10. 两球体相交,球缺的计算
  11. android系统应用更改内存,安卓root后必备神器:修改系统/清理内存神器
  12. html让登录框3d,CSS3实现3D旋转动态显示登录注册
  13. laravel 自定义分页样式
  14. spring-cloud-starter-bus-kafka利用kafka消息总线实现动态刷新配置
  15. 使用QT速成C++简单图形界面
  16. 相机标定与棋盘格标定
  17. 职称计算机考试 ps太难,2012年职称计算机考试photoshop常用技巧(3)
  18. uniapp引入dcloud中的组件
  19. [2021.05.26]AudioTrack流程分析
  20. 关于Raphael开发过程中的一些总结

热门文章

  1. Node.js 切近实战(七) 之Excel在线(文件文件组)
  2. Asp.Net超时问题汇总
  3. Linux中telnet命令
  4. 2012第50周星期日
  5. 电子书下载(强烈推荐):《大道至简——软件工程实践者的思想》
  6. Lua语言面向对象之复制表的方式面向对象
  7. SSH小区停车管理系统答辩PPT免费下载
  8. 【写作技巧】毕业论文的目录和正文有什么讲究?
  9. python 类 对象 方法 应用_Python 定制类与其对象的创建和应用
  10. rdlc mysql_RDLC 报表开发