2012-10-05 55 views
0

我在JSP中創建的Cent Os服務器中有Web應用程序。一段時間後,與mysql的連接超出限制,應用程序無法重新啓動mysql服務。在linux服務器的mysql中連接太多

即使我重新啓動mysql和tomcat服務,一些連接都是由mysql創建的。

[根@本地〜]#服務tomcat的重啓

關閉Tomcat的: 使用CATALINA_BASE:/usr/local/apache-tomcat-7.0.27 使用CATALINA_HOME:在/ usr /本地/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 /本地/ 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

[根@本地〜]#

服務的MySQL重啓

關閉MySQL。 [OK]

啓動MySQL ...... [OK]

[根@本地〜]#netstat的| grep mysql | WC -l

如以上那樣,它顯示180所連接的所有準備的運行狀態和連接是像

[根@本地〜]#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文件三次,沒有連接仍未封閉

請給我的解決方案...

+0

當你的tomcat沒有運行時,你的mySQL狀態如何?有沒有使用數據庫的應用程序? –

+0

如果沒有其他應用程序,請確保您的應用程序中存在連接泄漏,修復您的應用程序。 –

+0

您的應用程序不會關閉連接或準備好的語句或結果集。這是唯一可以發生的方式。 – user1516873

回答

3

CLOSE_WAIT TCP套接字狀態是指連接在過程中如果被關閉,等待應用程序來執行close()方法。在完成一些資源的使用(連接到數據庫,文件IO,網絡連接等)後,您應該始終執行close()方法。

您可以檢查這個example如何正確處理您的數據庫連接。

1

這聽起來像是你的應用程序在某處連接泄漏。

Java中連接泄漏的最常見原因之一是在try catch塊中不包含finally

查看this post瞭解更多詳情。