【问题标题】:MySQL getConnection() is crashing for no reasonMySQL getConnection() 无缘无故崩溃
【发布时间】:2019-07-01 08:31:48
【问题描述】:

我的工作电脑有一个奇怪的问题,也许你可以解决问题。我目前正在 jee 中开发,但我遇到了有关 MySQL DB 的问题。

假设我有这个:

for(int i = 0; i<20; i++)
{

//Simple select query on my MySQL DB

System.out.println("foo");

}

我的输出是:

富,富,富,富

如您所见,不知何故,我的 for 循环在 4 次迭代处停止。 但是经过长时间的调试后,我发现 getConnection() 不知何故卡在了一个线程中,即使等待了 2 个小时,它仍然被阻塞。然而,问题更加复杂,因为它不会每次都在同一个 getConnection() 上崩溃。

我的旧项目也不起作用,所以我想这不是代码问题。我尝试重新安装 Eclipse,WampServer,更改为 Java 1.7(我目前是 1.8),尝试了 tomcat 9(我目前是 tomcat 8),我已经删除并重新导入了一个全新的数据库,以防万一有一些损坏的数据。尝试了一个新项目的新工作区,我还更新了我在构建路径和运行时中使用的库和 jar。

但它仍然不起作用,而且变得非常非常令人沮丧。因此,如果您有任何想法,请告诉我。

【问题讨论】:

  • MySQL 日志中有什么内容?查询的形式是什么?会不会很慢?在等待查询时,SHOW PROCESSLIST 在服务器上显示什么?
  • 您需要展示更多代码——如何(以及何时)创建连接,以及如何释放它。可能是您正在耗尽连接池。

标签: mysql eclipse tomcat jakarta-ee wamp


【解决方案1】:

感谢您的回答。

我的 MySQL 日志的最后一行:Query SELECT count(*) FROM a_lcolang WHERE wsId=17474。
正如我们所见,这是一个非常简单的查询。

My show full processlist log

在我看来,我如何创建连接以及如何实现连接不是问题,因为我使用的方法已经存在了很长时间。更不用说它不再适用于运行良好的旧项目(如果不是这样,prod 就已经停止了)。

【讨论】:

    【解决方案2】:

    灵机一动,我发现了问题。

    问题在于 memcached 的大小 --> 将其从 512 更改为 245760

    【讨论】:

      猜你喜欢
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 2011-08-02
      相关资源
      最近更新 更多