我发现我的网络应用程序出现问题,hibernate连接无法正常关闭。 但考虑到Web应用程序的复杂性,至少需要15到30天。
与此同时,我想手动关闭连接。
这样我可以在不重启tomcat的情况下关闭此连接? 有一个命令可以用来杀死这个连接池吗?
我在hibernate配置中发现了一个错误,要解决
#netstat -anp |grep 3306 |grep CLOSE_WAIT
tcp 1 0 ::ffff:172.18.11.4:50750 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:36192 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:36215 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:36211 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:57820 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:36213 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
tcp 1 0 ::ffff:172.18.11.4:36159 ::ffff:172.18.11.8:3306 CLOSE_WAIT 4203/java
等...
运行Tomcat 5.5和Mysql 5.5的CentOS 6.0。
答案 0 :(得分:1)
始终致电socket.close()
。另请参阅how to close JDBC resources properly every time。
如果无法修复服务器,请添加以下行
到/etc/init.d/inetinit
/usr/sbin/ndd -set /dev/tcp tcp_close_wait_interval 1500
/usr/sbin/ndd -set /dev/tcp tcp_keepalive_interval 1500
并重新启动。根据{{3}}
或者,在Linux上,尝试http://www.experts-exchange.com/OS/Unix/Solaris/Q_20568402.html(tcpkill
的一部分)或dsniff
。
答案 1 :(得分:0)