Tomcat 6 在通过 JDBC 驱动程序管理器运行 mysql 准备语句(慢于 10 秒)时不会得到任何响应



我在使用基于 servlet 的现有应用程序(一个旧的应用程序(时遇到了一个奇怪的问题。

如果 mysql 准备语句运行速度慢于 10 秒,我无法让任何 servlet 完成操作(我在这个应用程序中只有准备好的语句(。

我对更快的查询(少于 10 秒(没有问题。

Catelina.out没有任何跟踪,也没有任何浏览器界面。当我通过提琴手检查浏览器请求时,它显示

"本届会议尚未完成。按 F5 在会话时刷新 完成更新的统计信息。请求计数:发送 1 个字节:

437(标头:437;正文:0(接收的字节数:0(标头:0;正文:0(">

MySQL"显示完整进程列表"命令显示(慢速查询(运行约12秒的套接字连接,命令="执行"和状态="发送数据",然后更改为COMMAND="睡眠"和STATE="并保持这种状态很长时间(超过500秒(。理想情况下,此连接不应长时间保持为 SLEEP,而是在发送数据完成后关闭。

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

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

MySQL connect_timeout=100 和 Tomcat connectionTimeout="100000"(对于我正在运行应用程序的端口 8000(。

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

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

我正在运行Windows 2008 R2标准版,tomcat 6和MySQL 5.5。

我无法将这种行为与任何原因联系起来。 非常感谢您的帮助。

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

最新更新