当前位置: 首页 > 知识库问答 >
问题:

当通过JDBC驱动程序管理器运行mysql准备的语句(低于10秒)时,Tomcat 6没有得到任何响应

晏昀
2023-03-14

我对现有的基于servlet的应用程序(有点旧)有一个奇怪的问题。

我无法让任何servlet完成操作,如果它有一个运行速度低于10秒的mysql预处理语句(我在这个应用程序中只有预处理语句)。

我对更快的查询没有问题(不到10秒)。

卡特琳娜。out没有任何痕迹,也没有浏览器界面。当我通过fiddler检查浏览器请求时,它显示

"此会话尚未完成。会话完成时按F5刷新以获取更新的统计信息。请求计数:1已发送字节:
437(标头:437;正文:0)接收字节:0(标头:0;正文:0)"

MySQL的“SHOW FULL PROCESSLIST”命令显示了特定的套接字连接(对于慢速查询),该连接使用命令=“Execute”和状态=“Sending Data”运行约12秒,然后更改为命令=“Sleep”和状态=“并长时间保持这种状态(超过500秒)。理想情况下,此连接不应长时间处于Hibernate状态,而应在发送数据完成后关闭。

netstat-ab命令显示与在tomcat6.exe和mysqld.exe下建立的连接相同的连接。理想情况下,这应该保持为TIME_WAIT,一旦查询执行完成,直到“TcpTimedWaitDelay”值。

此查询的预期有效负载非常名义上(大约2kbytes)。

MySQL connect\u timeout=100,Tomcat connectionTimeout=“100000”(对于我正在运行应用程序的端口8000)。

我没有尝试更改的一件事是JDBC DriverManager.setLoginTimeout属性,因为它只在获得连接之前才受到关注。

直到几天前,这个应用程序运行得很好。但是我没有任何关于这些天中查询执行时间的统计数据。

我正在运行windows 2008 R2 std edition、tomcat 6和MySQL 5.5。

我无法确定这种行为有任何原因。非常感谢你的帮助。

共有1个答案

澹台浩广
2023-03-14

这似乎是与MySQL连接器相关的问题。我们使用旧的连接器(版本3.1. x)。最新的稳定版本(5.1.20)修复了该问题。

 类似资料:
  • 我试图了解MySQL JDBC驱动程序中的客户端仿真准备语句是如何工作的。 第1部分我在网上读到,对于准备好的语句,关系数据库处理JDBC/SQL查询时涉及四个步骤,它们如下: 分析传入的SQL查询 编译SQL查询 规划/优化数据采集路径 执行优化的查询/获取并返回数据 如果客户端仿真准备好的语句没有往返数据库,那么它如何执行步骤3?还是客户端仿真准备语句的工作方式不同? 第二部分我还做了两个实验

  • 试图连接到允许远程连接的免费mysql数据库主机,但我遇到了以下错误: 未找到适合jdbc的驱动程序:mysql://xx2-23-x1-2x1-172.compuxe-1.xmazonaws.com:3306 我使用下面的代码。 编辑 Stack Trace显示在下面:

  • 用于cassandra的Datastax Java驱动程序(cassandra-driver-core 2.0.2)支持PreparedStatements以及QueryBuilder API。使用其中一种比另一种有什么特别的优势吗?缺点? 文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drive

  • 我正在尝试使用以下代码将我的JavaMaven项目(在Jetty服务器上运行)连接到Google Cloud MySQL数据库: 我已经在pom中包含了这两个依赖项。xml: 我要走了 JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://google... 我不知道该怎么办。我假设依赖项应该处理将JDBC驱动程序添加到我的类路径。

  • 我读到MySQL不支持服务器端查询计划缓存。所以如果我想使用PreparedStatements来获得性能优势,我能做的就是在JDBC连接中启用语句缓存。因此,根据文档,它将允许缓存每个连接基础上准备好的语句。 与如果MySQL有服务器端查询计划缓存相比,JDBC连接的PreparedStatement缓存的性能增益是什么?因此,如果PreparedStatement确实在物理连接的缓存中找到,这

  • 我正在使用我生成的一个准备好的语句,但在Java抛出的语句上出现了语法错误。然而,当我将PS的toString复制并粘贴到数据库的phpmyadmin中时,它的执行完美无缺。有什么想法会出错吗,我很难理解? 编辑:更改为PS.ExecuteUpdate(查询);还是不起作用。