一个朋友让我帮忙解决他服务器上一个JAVA应用出现的问题,我利用业务时间赶赴现场两次,终于解决了这个疑难杂症,赶紧记录下来,不求能解救曾经和我一样困惑的劳苦大众,但愿自己别忘了。
一、问题的表现
首先说明一下环境,服务器是WINDOWS SERVER 2003,我对这个操作系统的特性不是很熟悉,只是当做普通的个人版操作系统来使用。我平时一般JAVA服务器都是安装LINUX。
数据库使用的SQL SERVER 2005,SP2。他的数据库本来是SQL SERVER 2000的,是我上周帮他做的迁移。
中间件使用RESIN 2.1.17,这是我非常喜欢和熟悉的SERVLET容器,加不加装APACHE都具有很好的WEB服务性能。
杀毒软件使用的瑞星,双网卡,硬件防火墙,什么牌子我没管。
那到底是什么问题?
这个!
com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind
RESIN启动后,在短时间内正常,但是在没有访问的情况下,会在几个小时后,自己死掉。静态页面没有问题,也就是基于HTTPWEB服务器没有死,涉及数据库连接的,都不行。
二、分析
我是第一次碰到这个错误,赶紧GOOGLE。
我首先自己排除了是程序的问题,网上有人说,是数据库连接没有关闭,这样的同志都是新手,而且我自己也可以肯定,程序是肯定没