“java.net.BindException:地址已在使用中”,尝试为负载测试快速创建和销毁socket时
我试图通过打开大量到服务器的socket连接,进行身份验证,关闭连接,然后重复,来加载测试Java服务器。我的应用程序在一段时间内运行良好,但最终我得到:
java.net.BindException: Address already in use: connect
根据我阅读的文档,这是因为在调用close()之后的一段时间内,关闭的socket仍然占用分配给它们的本地地址。这取决于操作系统,但可能以分钟为单位。我试着在socket上调用setReuseAddress(true)
,希望它的地址在调用close()
后可以立即重用。不幸的是,情况似乎并非如此
我创建socket的代码是:
Socket socket = new Socket();
socket.setReuseAddress(true);
socket.connect(new InetSocketAddress(m_host, m_port));
但我还是犯了这个错误:
java.net.BindException: Address already in use: connect after awhile.
有没有其他方法来完成我想做的事情?我想举个例子:打开100个插座,全部关闭,打开200个插座,全部关闭,打开300个等等,最多2000个左右的插座
任何帮助都将不胜感激
共 (0) 个答案