连接在不活动一段时间后挂起

2023-11-22

在我的应用程序中,Spring 管理用于数据库访问的连接池。 Hibernate 使用这些连接进行查询。乍一看,我对池没有任何问题:它可以在并发客户端和只有一个连接的池中正常工作。我可以执行很多查询,所以我认为我(或Spring)不会留下开放的连接。

我的问题是在闲置一段时间(有时 30 分钟,有时超过 2 小时)后出现的。然后,当 Hibernate 进行一些搜索时,它会持续太多时间。将 log4j 级别设置为 TRACE,我得到以下日志:

...
18:27:01 DEBUG nsactionSynchronizationManager  - Retrieved value [org.springframework.orm.hibernate3.SessionHolder@99abd7] for key [org.hibernate.impl.SessionFactoryImpl@7d2897] bound to thread [http-8080-Processor24]
18:27:01 DEBUG HibernateTransactionManager     - Found thread-bound Session [org.hibernate.impl.SessionImpl@8878cd] for Hibernate transaction
18:27:01 DEBUG HibernateTransactionManager     - Using transaction object [org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject@1b2ffee]
18:27:01 DEBUG HibernateTransactionManager     - Creating new transaction with name [com.acjoventut.service.GenericManager.findByExample]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
18:27:01 DEBUG HibernateTransactionManager     - Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@8878cd]
18:27:01 TRACE SessionImpl                     - setting flush mode to: AUTO
18:27:01 DEBUG JDBCTransaction                 - begin
18:27:01 DEBUG ConnectionManager               - opening JDBC connection

在这里它会冻结大约 2 - 10 分钟。但随后继续:

18:30:11 DEBUG JDBCTransaction                 - current autocommit status: true
18:30:11 DEBUG JDBCTransaction                 - disabling autocommit
18:30:11 TRACE JDBCContext                     - after transaction begin
18:30:11 DEBUG HibernateTransactionManager     - Exposing Hibernate transaction as JDBC transaction [jdbc:oracle:thin:@212.31.39.50:30998:orcl, UserName=DEVELOP, Oracle JDBC driver]
18:30:11 DEBUG nsactionSynchronizationManager  - Bound value [org.springframework.jdbc.datasource.ConnectionHolder@843a9d] for key [org.apache.commons.dbcp.BasicDataSource@7745fd] to thread [http-8080-Processor24]
18:30:11 DEBUG nsactionSynchronizationManager  - Initializing transaction synchronization
...

之后,它就可以正常工作,直到另一段时间不活动。恕我直言,连接池似乎返回了一个无效/关闭的连接,当 Hibernate 意识到这一点时,请向池中请求另一个连接。

我不知道如何解决这个问题,也不知道我可以做些什么来界定它。任何帮助实现这一目标将不胜感激。

Thanks.

编辑:好吧,这最终是由于防火墙规则所致。数据库检测到连接丢失,但池(dbcp 或 c3p0)没有。因此,它尝试查询数据库但没有成功。对我来说仍然奇怪的是超时时间变化很大。也许规则特别奇怪或者防火墙无法正常工作。无论如何,我无法访问那台机器,只能等待解释。 :(


当数据库位于单独的盒子上并且中间有一个防火墙设置为超时空闲连接时,我以前遇到过这样的问题。

在某些情况下,防火墙会以 JDBC 端无法检测到的方式切断连接,并且尝试使用它会导致无限期的阻止。

就我而言,它是一个自定义连接池,它在从池中返回之前向连接发送测试查询。我将此测试查询配置为超时(使用 Statement.setQueryTimeout),这样它就不会无限期地阻塞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接在不活动一段时间后挂起 的相关文章

  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • Clojure MySQL 语法错误异常(“[...] 靠近 '???????????????' [...]”)

    除了建立连接之外 我在使用 clojure contrib sql 做任何事情时都遇到困难 我有一个 mysqld 在 localhost 3306 上运行 数据库名为clj db 用户 clj user localhost 和密码 clj
  • 通过条件查询获取表的第一行

    如何使用以下命令获取表格的第一行criteria or HQL query 表创建脚本 CREATE TABLE MonthlySubscriber MSISDN bigint 20 NOT NULL MonthOfYear int 11
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • APEX:从临时表下载 BLOB

    我正在尝试使用 Oracle APEX 4 1 1 构建一个简单的查看应用程序 要显示的信息位于与包含 APEX 应用程序访问的架构的数据库不同的数据库上的表中 使用视图 View 访问此远程表 远程表视图 和数据库链接 视图按预期工作 包
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 将 .NET DateTime 对象转换为 Javascript Date 对象

    我有以下问题 我从 SQL Server 检索 DateTime 对象 并通过 JSON 使用 ajax 将其传递给 Javascript 我在尝试将检索到的对象转换为 JavaScript 中的日期对象时遇到了困难 检索到的对象是一个值
  • SSRS:在两页报告上显示正确的执行时间?

    我只是想知道如何在报告上显示正确的执行时间 直到最近 我一直在报告的页脚中使用以下内容作为标签表达式 Execution Time IIf System DateTime Now Subtract Globals ExecutionTime
  • Jenkins 管道确定分支是否用于 Bitbucket 拉取请求

    我将 Jenkins 与Bitbucket分支源插件 一切都很好 但我希望能够根据分支是否与拉取请求关联来运行 排除管道中的某些阶段 例如 pipeline stages stage build compile stage package
  • iPad 分体式键盘

    我正在创建一个类似于 iPad 的 iMessage 应用程序的应用程序 用于发送消息 因此 当显示键盘时 有一个输入视图锚定在消息视图和输入附件视图的底部 此外 当键盘在停靠或脱离停靠时显示时 必须正确调整消息视图的大小 我遇到的问题是来
  • 检查对象是否是 Swift 中的给定类型

    我有一个由以下组成的数组AnyObject 我想迭代它 并找到所有属于数组实例的元素 如何在 Swift 中检查对象是否属于给定类型 如果您想检查特定类型 可以执行以下操作 if let stringArray obj as String
  • 编译boost时`threading=multi`到底做了什么?

    我不完全确定到底是什么threading multiflag 在构建 boost 时会起作用 文档说 Causes the produced binaries to be thread safe This requires proper s
  • 隐藏但仍用 GIT 保存分支?

    我有大量的分支 使用起来有点混乱 有时我不想完全删除该分支 但我暂时不会对其进行处理 在这种情况下 我采用了在分支前添加 前缀的约定 所以如果我从以下开始 branch1 branch2 branch3 当我完成了branch1但想保存它的
  • 阻止文本在网址中的句点上拆分为多行

    我有一个显示一些文本的 Android TextView 它是多行的 不过 在文中 我有时也会有域名 如何阻止 TextView 将行按句点分割 例如 是否有 unicode 不间断句点 要查看包装电子邮件地址时出现的问题 请运行 andr
  • 在 2d 环境中以百分比增量将对象从向量 A 移动到 B

    我知道向量 A 和 B 的坐标 如何计算这两个向量之间的第一个点 第一个向量 X 是向量 A 和 B 之间距离的 1 所以首先我将向量 A 中的对象移动到向量 B 1 附近 所以我需要计算向量 X 它是对象的新向量 直到它到达向量 B 你要
  • 从分隔文件加载数据到 mysql 表时跳过错误行

    我使用以下查询将数据从文本文件加载到 mysql 表 LOAD DATA INFILE myFile csv INTO TABLE some table COLUMNS TERMINATED BY OPTIONALLY ENCLOSED B
  • Jetpack Compose Navigation - 将本地文件位置作为字符串传递

    我正在尝试传递音频文件位置 storage emulated 0 Android media 作为第一个屏幕中的字符串home screen到第二个屏幕detail screen 当我正常传递上面的字符串作为参数时 我收到此错误 java
  • Python 进程使用的总内存?

    Python 程序有没有办法确定它当前使用了多少内存 我看过关于单个对象的内存使用情况的讨论 但我需要的是该进程的总内存使用情况 以便我可以确定何时需要开始丢弃缓存数据 Here是一个有用的解决方案 适用于各种操作系统 包括 Linux W
  • fetch response.text() 返回待处理的承诺

    我使用 jsonplaceholder URL 测试 fetch API 但我的函数返回 Promise State Pending 我不明白为什么 function getUsers url return fetch url const
  • CSS:删除选择元素内的填充

    我试图从选择元素中删除填充 以便其中的文本与其正下方的输入元素中的文本对齐 除其他外 我还尝试过以下操作 select padding left 0 有任何想法吗 JS小提琴在这里http jsfiddle net pLSkH 2 去除te
  • 当应用程序在后台运行时,如何让我的 AVPlayer 播放?

    我已经完成了我的作业 一直在阅读这里的文档 谷歌搜索 stackoverflowing 但是当用户让应用程序进入后台时仍然无法让我的声音保持不变 到目前为止我所做的 将 UIBackgroundModes 音频添加到 plist 文件中 首
  • 如何搜索redis哈希中的关键模式?

    我有一个哈希表 其键的模式为 USER TEL 如下所示 bob 123456 Some address mary 567894 other address john 123456 third address 现在 我想获取密钥中具有相同电
  • 使用 atos 通过 dSYM 确定崩溃的方法名称

    我有一个来自用户的控制台堆栈 不是崩溃报告 我试图确定我的应用程序中的哪个方法调用是最后一个站着的人 我知道他们使用的是哪个版本的应用程序 并且我有该发布 调试版本的副本 以及存档副本的 dSYM 文件 但是 当我尝试使用atos吐出内存地
  • React Native 响应式字体大小

    我想问一下如何反应原生处理或做响应式字体 例如 在 iphone 4s 中 我的 fontSize 14 而在 iphone 6 中 我的 fontSize 18 您可以使用像素比 例如 var React require react na
  • SELECT * INTO 在 SQL Server 2008 中保留 ORDER BY,但在 2012 中不保留

    在2008年和2012年执行以下SQL 在2008年执行时 返回的结果是正确的排序顺序 2012 年 排序顺序不再保留 这是已知的变化吗 2012 年是否有保留排序顺序的解决方法 CREATE TABLE MyTable Name VARC
  • 连接在不活动一段时间后挂起

    在我的应用程序中 Spring 管理用于数据库访问的连接池 Hibernate 使用这些连接进行查询 乍一看 我对池没有任何问题 它可以在并发客户端和只有一个连接的池中正常工作 我可以执行很多查询 所以我认为我 或Spring 不会留下开放