大批量socket连接问题

ttlb 2005-10-20 06:56:56
不停的向某个端口发起连接,当达到一定数量的时候,就会连接不上,netstat -a 里面发现端口已经满了。我觉得是windows在哪个地方限制了连接端口的数量,或者socket端口释放得太慢。哪位大虾知道,Win2000上,这种问题该怎么解决?
下面是示例代码:
import java.io.IOException;
import java.net.Socket;public class SocketTest {
public static void main(String[] args) {
for (int i = 0; i < 9999; ++i) {
try {
Socket socket = new Socket("127.0.0.1", 21);
socket.close();
} catch (IOException ioe) {
System.out.println("Error: " + i);
break;
} catch (Exception e) {
System.out.println("Other Exception: " + i);
return;
}
}
System.out.println("End");
}
}
...全文
191 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cozmic 2005-10-27
  • 打赏
  • 举报
回复
mark 下~
牛牛多多
collar_bird 2005-10-27
  • 打赏
  • 举报
回复
支持楼上的,
takecare 2005-10-27
  • 打赏
  • 举报
回复
此外在unix/linux的平台下,如果你选用的是FreeBSD的话,那就更加运气一下,可以通过
echo net.inet.tcp.msl=2000 >> /etc/sysctl.conf
/etc/rc.d/sysctl restart
来调整TIME_WAIT连接的超时,缺省为30000
takecare 2005-10-27
  • 打赏
  • 举报
回复
这个问题其实跟java或者变成语言没有什么关系,呵呵,做服务器的人都会同样遇到问题的。呵呵。

解决之道,加快处理时间(改代码调优),增加服务器(硬件投资)。
如果调优很耗时也很艰巨,费用又紧张的话,还可以通过以下调整系统内核参数获得一定的改善。
window nt系列
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下增加双字节值的注册表项:
1)MaxUserPort
缺省是5000 (十进制)
可以设置为最大65534 (十进制)
2)TcpTimedWaitDelay
缺省是240 (十进制)
可以设置为最大30 (十进制)

unix/linux
echo 65536 > /proc/sys/fs/file-max
ulimit -n 65536
xiachedan 2005-10-27
  • 打赏
  • 举报
回复
关注
ttlb 2005-10-27
  • 打赏
  • 举报
回复
up
ttlb 2005-10-25
  • 打赏
  • 举报
回复
to believefym(暮色,miss,迷失,miss。。。) :
是socket.close()耗时,还是指的windows的socket关闭耗时?
有什么办法没有啊?
believefym 2005-10-22
  • 打赏
  • 举报
回复
可能是close耗时的问题
hui_feng 2005-10-22
  • 打赏
  • 举报
回复
帮你打一下。
ttlb 2005-10-22
  • 打赏
  • 举报
回复
up
ttlb 2005-10-22
  • 打赏
  • 举报
回复
up
ttlb 2005-10-21
  • 打赏
  • 举报
回复
up,不好意思,在哪里看?
shao4966 2005-10-20
  • 打赏
  • 举报
回复
你看看许可证里有没有做过设置?
ttlb 2005-10-20
  • 打赏
  • 举报
回复
up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧