0

我在 JSP 中创建的 Cent Os 服务器中有 Web 应用程序。一段时间后,与 mysql 的连接超过了限制,如果不重新启动 mysql 服务,应用程序将无法工作。

即使我重新启动了 mysql 和 tomcat 服务,一些连接也已经由 mysql 创建。

[root@localhost ~]#服务tomcat重启

关闭 Tomcat:使用 CATALINA_BASE:/usr/local/apache-tomcat-7.0.27 使用 CATALINA_HOME:/usr/local/apache-tomcat-7.0.27 使用 CATALINA_TMPDIR:/usr/local/apache-tomcat-7.0.27/ temp 使用 JRE_HOME:/usr/java/jre1.6.0_10 使用 CLASSPATH:/usr/local/apache-tomcat-7.0.27/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.27/bin/ tomcat-juli.jar

启动 Tomcat:使用 CATALINA_BASE:/usr/local/apache-tomcat-7.0.27 使用 CATALINA_HOME:/usr/local/apache-tomcat-7.0.27 使用 CATALINA_TMPDIR:/usr/local/apache-tomcat-7.0.27/temp使用 JRE_HOME:/usr/java/jre1.6.0_10 使用 CLASSPATH:/usr/local/apache-tomcat-7.0.27/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.27/bin/tomcat -juli.jar

[root@localhost ~]#

服务mysql重启

关闭 MySQL。[ 好的 ]

启动 MySQL ...... [ 好 ]

[root@localhost ~]# netstat | grep mysql | wc -l

180

如上所示,它显示了 180 个连接都准备好运行,连接就像

[root@localhost ~]# netstat | grep mysql

tcp 1 0 localhost.localdomain:49058 localhost.localdomain:mysql CLOSE_WAIT tcp 1 0 localhost.localdomain:49061 localhost.localdomain:mysql CLOSE_WAIT tcp 1 0 localhost.localdomain:49060 localhost.localdomain:mysql CLOSE_WAIT tcp 1 0 localhost.localdomain:49063 localhost.localdomain:mysql CLOSE_WAIT tcp 1 0 localhost.localdomain:49062 localhost.localdomain:mysql CLOSE_WAIT

我已经检查了我的 sql 文件 3 次,并且没有未关闭的连接

请给我解决方案...

4

2 回答 2

3

CLOSE_WAITtcp 套接字状态表示如果连接被关闭,则连接正在处理中,等待应用程序执行 close() 方法。在完成某些资源的使用(连接到数据库、文件 IO、网络连接等)后,您应该始终执行 close() 方法。

您可以查看此示例如何正确处理数据库连接。

于 2012-10-05T11:09:17.787 回答
1

在我看来,好像您的应用程序中某处存在连接泄漏。

在 Java 中泄漏连接的最常见原因之一是finally在您的try catch块中不包含 a。

查看这篇文章了解更多详情。

于 2012-10-05T11:16:36.393 回答