已达到 MYSQL 连接限制 - JDBC 会自动关闭吗?
Posted
技术标签:
【中文标题】已达到 MYSQL 连接限制 - JDBC 会自动关闭吗?【英文标题】:MYSQL connection limit reached - Do JDBC's close automatically? 【发布时间】:2017-05-24 04:26:07 【问题描述】:我有几台计算机正在运行本地脚本,但需要能够在它们之间传递信息。我在一台装有 XAMPP 的计算机上使用 mysql 数据库来完成此操作。
每台计算机重复启动并终止它正在运行的本地脚本,该脚本具有一个静态数据库类,该类在初始化时使用 JDBC 创建连接。然后,他们使用此连接执行大约 10-15 分钟的操作,然后脚本终止然后重新启动。
只有 5 台计算机可以访问 MYSQL 数据库,我的 max_connections 设置为 151,但每隔一段时间我就会收到连接限制达到错误,并且我的所有脚本都崩溃了。
我假设 MSQL 数据库连接在脚本终止时会自动关闭,因为在此错误发生之前我可以运行脚本超过 151 次。在终止脚本之前是否需要关闭连接?什么可能导致这种情况发生?
另外,当发生此错误时,我可以简单地重新启动脚本并且它们可以正常启动。我不需要去 phpMyAdmin 和刷新。
【问题讨论】:
您应该始终自己关闭连接,不要依赖于退出时的清理或破坏。这可能需要一段时间(或者,如果有错误,甚至可能会挂起)。 【参考方案1】:当您使用完数据库后,请检查您是否正在断开连接。有时需要一段时间才能自动断开会话。
【讨论】:
好的。如果这是造成这种情况的原因,那就很有意义了。【参考方案2】:作为最佳做法,您应该始终在完成连接后关闭连接。在 Java 中,如果您忽略关闭连接,那么您最终会得到一个打开的连接;但是,PHP 的文档建议脚本完成时将关闭未关闭的连接:http://php.net/manual/en/function.mysql-connect.php
您可以通过 MySQL Workbench 或同等工具监控打开的连接,并找出它们的来源。
【讨论】:
以上是关于已达到 MYSQL 连接限制 - JDBC 会自动关闭吗?的主要内容,如果未能解决你的问题,请参考以下文章
具有 BoneCP 连接池配置的 Spring JDBC 模板