Java 为什么';没有可用的缓冲区空间';当我有足够的端口时出错?

Java 为什么';没有可用的缓冲区空间';当我有足够的端口时出错?,java,windows,networking,tcp,coldfusion,Java,Windows,Networking,Tcp,Coldfusion,我有三台运行Windows2003的服务器,其中包括ColdFusion 9(JRUN4)和ColdFusion 10(Tomcat7) 每周有几次,其中一台服务器到处都会出现套接字错误: javax.mail.MessagingException: Could not connect to SMTP host: 192.168.1.3, port: 25; nested exception is: java.net.SocketException: No buffer space av

我有三台运行Windows2003的服务器,其中包括ColdFusion 9(JRUN4)和ColdFusion 10(Tomcat7)

每周有几次,其中一台服务器到处都会出现套接字错误:

javax.mail.MessagingException: Could not connect to SMTP host: 192.168.1.3, port: 25;     nested exception is: java.net.SocketException: No buffer space available (maximum connections reached?): connect

当然,我一直在搜索Google和Stack Overflow来查找这个错误,并尝试了许多可能的修复方法。例如MaxPorts注册表值。我遇到的问题是,这些服务器的端口不足。他们有很多。我一直在使用TCPview和netstat(甚至CurrPorts记录所有对文件的TCP和UDP更改)来分析这种情况。但是每一件看起来都很好。在任何时候都不会有超过几百个进出口的连接

此外,并非所有来自服务器的传出请求都会引发套接字异常。在这些机器上运行的网站是可以访问的,但有时(似乎是随机的)访问者会收到上述套接字错误

使用RDP连接到这些机器不是问题,从这些服务器到其他地方进行ping或telnet调用也从来不是问题


那么,当我有足够的端口时,我怎么会耗尽端口呢?

因为端口!=缓冲区和连接!=港口。
SQLException while attempting to connect: java.sql.SQLNonTransientConnectionException: [Macromedia][SQLServer JDBC Driver]Error establishing socket to host and port: 192.168.1.11:1433. Reason: No buffer space available (maximum connections reached?): connect.
java.io.IOException: Socket read failed at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:323)