java应用程序,线程在终止MySQL连接后挂起

2024-06-29

我有一些工作线程正在运行,其中包括 MySQL 和 mysql-connector-java-5.1.20。 当我杀死一些 SQL 语句(使用 mysql 客户端的kill“连接id”)时,java线程挂起,这应该抛出一些异常。

jstack 打印:

    "quartzBase$child#45e3dd3c_Worker-3" prio=10 tid=0x00007f960004c800 nid=0x713d runnable [0x00007f943b3a0000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAvailable(Native Method)
        at java.net.PlainSocketImpl.available(PlainSocketImpl.java:472)
        - locked <0x00007f9e11fe13a8> (a java.net.SocksSocketImpl)
        at java.net.SocketInputStream.available(SocketInputStream.java:217)
        at com.mysql.jdbc.util.ReadAheadInputStream.available(ReadAheadInputStream.java:232)
        at com.mysql.jdbc.MysqlIO.clearInputStream(MysqlIO.java:981)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2426)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2677)
        - locked <0x00007f9e17de2b50> (a com.mysql.jdbc.JDBC4Connection)
        at com.mysql.jdbc.ConnectionImpl.rollbackNoChecks(ConnectionImpl.java:4863)
        at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4749)
        - locked <0x00007f9e17de2b50> (a com.mysql.jdbc.JDBC4Connection)
        at org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:368)
        at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.rollback(PoolingDataSource.java:323)
        at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:217)
        at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:196)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:430)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:112)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy1021.process(Unknown Source)

使用 jvmtop,我看到了这个:

JvmTop 0.8.0 alpha - 22:48:37,  amd64, 24 cpus, Linux 2.6.32-35, load avg 11.53
 http://code.google.com/p/jvmtop

 Profiling PID 27403: com.caucho.server.resin.Resin --root-dir 

  36.41% (     0.22s) com.mysql.jdbc.util.ReadAheadInputStream.available()
  33.42% (     0.20s) ....opensymphony.xwork2.conversion.impl.DefaultTypeConve()
  30.17% (     0.18s) com.mysql.jdbc.util.ReadAheadInputStream.fill()
   0.00% (     0.00s) com.rabbitmq.client.impl.Frame.readFrom()

工作线程永远不会接受新任务。

任何想法?


根据MySQL文档 http://dev.mysql.com/doc/refman/5.0/en/kill.html“kill connection thread_id”应该终止与给定 thread_id 关联的连接。但看起来这并没有发生(在这种情况下,Java 线程将永远等待答案)。也许您可以使用某些网络工具(例如 netstat)验证连接是否确实已关闭。

我之前遇到过 MySQL 连接挂起的情况,不得不求助于使用套接字超时 http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.htmlJDBC 连接参数(但要小心:socketTimeout 需要大于完成最长运行查询所需的时间)。您也可以尝试使用查询超时 http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#setQueryTimeout%28int%29准备好的声明。

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

java应用程序,线程在终止MySQL连接后挂起 的相关文章

  • Kafka模板和Kafka生产者有什么区别?

    正如我所见 Kafka 模板内部使用了 Kafka 生产者 我只是想知道确切的区别是什么 此外 与 Kafka 生产者相比 我发现 Kafka 模板中提供了许多可用的 send 方法 请帮我解决一下 如果有人知道更多的话 生产者是一种模式
  • 如何将 Postgres inet 数据类型与 OpenJPA 结合使用?

    我需要使用 OpenJPA 2 2 2 在 Postgres 9 0 表中记录 IP 地址 我已经使用本机查询让它工作 EntityManager entityManager entityManagerFactory createEntit
  • 当开关用于枚举时,default 有什么用?

    假设我有一个枚举Color有 2 个可能的值 RED and BLUE public enum Color RED BLUE 现在假设我有这个枚举的 switch 语句 其中有两个可能值的代码 Color color getColor a
  • 正则表达式匹配 Java 中的未转义逗号

    问题描述 我试图使用 String 类提供的 split 方法将 a 拆分为单独的字符串 文档告诉我 它将围绕参数的匹配进行拆分 参数是正则表达式 我使用的分隔符是逗号 但逗号也可以转义 我使用的转义字符是正斜杠 只是为了让事情变得更容易
  • Java 中 getter 的命名约定有多重要?

    我非常相信一致性 因此也相信惯例 然而 我目前正在用 Java 开发一个框架 其中这些约定 特别是get set前缀约定 似乎妨碍了可读性 例如 有些课程会有id and name属性和使用o getId 代替o id 由于多种原因 这似乎
  • Qt:将事件发布到 QThread 的正确方法?

    在我的 Qt 应用程序中 我有一个主线程和一个工作线程 工作线程子类QThread并通过处理事件customEvent 这是主线程发送要由工作线程处理的事件的正确方法吗 QThread myWorkerThread QApplication
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 如何对文本文件执行二分搜索

    我有一个大文本文件 5Mb 我在 Android 应用程序中使用它 我将文件创建为预先排序的字符串列表 并且文件一旦创建就不会更改 如何对此文件的内容执行二分搜索 而不需要逐行读取来查找匹配的字符串 由于文件的内容不会改变 因此您可以将文件
  • Whitelabel 错误页面 Swagger,此应用程序没有 /error 的显式映射,因此您将其视为后备 swagger2:3.0.0-SNAPSHOT

    尝试在 Spring Boot 2 3 1 中配置 swagger 摇篮配置 repositories mavenCentral maven url http oss jfrog org artifactory oss snapshot l
  • 使用 Jackson 从 JSON 文件中删除空元素

    我正在尝试从 JSON 文件中删除一个元素 Lorem Ipsum 4 Lorem Ipsum 5 keyToRemove value 使用以下代码 我可以删除键和值 for JsonNode personNode rootNode if
  • java代码中的问号

    有人能解释一下下面代码中的问号吗 INITIAL PERMANCE 也是代码中的静态最终常量 但是语法的最后一行被称为什么 Synapse AbstractCell inputSource float permanence inputSou
  • 使用 jsoup 收集倒计时器并为 android 设置计时器

    我想解析 eBay 上的倒计时器 span class 5g 20h span 如何用 jsoup 解析它以在 android studio 上创建倒计时器 我可以像平常一样解析它吗element 像下面这样 更新 getMsFromStr
  • Java 打印 PDF 并带有选项(装订、双面打印等)

    我有一个打印 PDF 的 java 程序 它使用 Apache PDFBox 创建PDDocument对象 来自 pdf 文档或某些情况下来自流 然后使用javax print API private boolean print File
  • 通过 ENUM 值检索 SUM(count)

    这是我的表的一个示例 drug id route enum count 1 PO 2 1 IV 4 1 IV 6 2 PO 1 2 PO 5 2 IV 2 这就是我需要信息的方式 基本上它的SUM count 但在每个 路线 的一列中 dr
  • 如何在 JPA/Hibernate 中找出实体是否分离?

    有没有办法查询JPA实体管理器给定实体是否分离 这个帖子 https stackoverflow com questions 2779857 how to know if a detached jpa entity has already
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • 使用 ThreadCount TestNG 限制并行测试的数量

    我在这里很头疼 我不知道如何处理这个问题 我有几个通过 xml 运行的测试类 约90个测试班 每个班约10 Test进入其中 我配置了一个硒网格 带有maxSession 5因此 单个节点上最多可以并行运行 5 个并行浏览器实例 这是我不明
  • 创建用于软件分发的多平台 CD

    这与编程无关 但我希望仍然相关 我正在开发一个用 Java 编写的项目 旨在用于 PC 和 Mac 它将以 CD 形式发行 最终可能还会以 DVD 形式发行 我们的目标受众显然是非技术性的 因此 CD 在加载时 正常工作 非常重要 这本身并
  • 使用递归求数字之和

    对Java来说相当陌生 但我正在编写一个教程 其中我必须使用递归找到用户输入整数的数字总和 到目前为止 这是我的代码 公开课其他 public static void main String arg Scanner s new Scanne
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线

随机推荐

  • Apache MINA SSHD - 连接到服务器时身份验证方法出现问题

    I am trying to follow Apache MINA s guide https mina apache org sshd project embedding ssh html for setting up a SSHD se
  • Dagger 2 - @Singleton 注释类的目的是什么

    来自匕首2文档 http google github io dagger 我注意到你可以有一个 Singleton带注释的类 将一个类标记为的目的是什么 Singleton因为我试图在我的代码中执行此操作 但没有生成单例对象 我不清楚用这个
  • 画廊新媒体如何播放?

    我试图收到有关添加到手机图库的新图片或视频的通知 我需要获取新媒体的 URI 目的是让我可以自动备份它 因此 我需要一个在后台设置的寄存器来连续侦听或检查添加到图库的新媒体 并捕获 Uri 这过去是通过广播接收器完成的 例如
  • 使用 Hashmap 理解两个或多个键

    我的哈希图有问题 在我的哈希映射方法中 我希望有两个或多个关键字作为键 而不是只有一个 例如 我希望用户输入一些包含两个或多个关键字的句子 假设 教授姓名 是关键字 例如 String temp3 instructor teacher me
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • Linq to SQL:左连接到 MAX 聚合

    我正在尝试编写一个 Linq to SQL 语句 该语句显示所有客户记录 并且仅显示发票表的匹配 max InvoiceId 基本上是客户的最新发票 左联接是必需的 因为客户可能没有任何发票 但需要位于结果集中 两个基本表 外键为 Cust
  • 在 C/C++ 中绘制填充椭圆的简单算法

    在SO上 找到了以下绘制实心圆的简单算法 for int y radius y lt radius y for int x radius x lt radius x if x x y y lt radius radius setpixel
  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 哪些FTP传输模式被广泛使用?

    阅读 FTP RFC RFC959 我注意到一些我从未见过的模式 而且确实似乎没有被流行的 FTP 软件 例如 vsftpd 实现 具体地 对于STRU命令 通常仅使用文件模式 STRU F 而对于MODE命令 通常仅使用流模式 MODE
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • Visual Studio 中的 Azure 服务总线托管标识返回 401 - 令牌颁发者无效

    我正在尝试使用代码中的托管标识访问 Azure 服务总线 目前我只是在本地尝试这个 当我调试代码时出现以下错误 System UnauthorizedAccessException Put token failed status code
  • 如何在 C++ 中从模板基类的构造函数调用模板超类的构造函数?

    我正在使用 sublimetext3 用 c 进行编程 我的程序有一个名为 Array 的超类和一个名为 IntArray 的子类 这两个类都是模板类 目前 我在编译该程序时遇到问题 它不断在我的 IntArray cpp 文件中给出错误
  • 在Python中将月份和年份的列合并为季度和年份的列

    我有一个数据框 df Month 1 8 Year 2015 2020 df pd DataFrame data df df 想要将其转变为新列 期望的输出 df Month 1 8 Year 2015 2020 Quarter Q1201
  • 使用 ExoPlayer 播放 YouTube 视频 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣使用外放播放器 http developer android com guide topics
  • Sleak SWT 工具,设备不跟踪资源分配

    我在使用 Sleak 测试 RCP 应用程序时遇到问题 因为它不显示任何内容 仅显示消息 警告 设备未跟踪资源分配 我已经设置了Sleakthis http eclipsesource com blogs 2009 04 17 findin
  • EMV如何加密非接触式交易?

    我试图弄清楚 EMV 标准化建议采用哪种加密方式来通过 NFC 传输支付信息 我浏览过规格 https www emvco com specifications aspx id 21 但我找不到有关此主题的任何提示 我知道卡制造商在其卡本身
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • 动态创建的标签被覆盖

    我正在开发一个应用程序 其中我在一个函数中动态添加了 5 个标签 当我回想起相同的函数时 尽管在每次创建时释放了标签 但先前创建的标签上的标签都会被覆盖 for int i 1 i lt array count i CGRect lblfr
  • 重复 Pinterest Facebook 邀请功能

    I m trying to duplicate Pinterest s Invite Friends functionality In case you haven t seen what it looks like it looks li
  • java应用程序,线程在终止MySQL连接后挂起

    我有一些工作线程正在运行 其中包括 MySQL 和 mysql connector java 5 1 20 当我杀死一些 SQL 语句 使用 mysql 客户端的kill 连接id 时 java线程挂起 这应该抛出一些异常 jstack 打