Java 如何准确测量服务器可以处理的套接字连接数?
我有一个TCP服务器,我正在用一个虚拟客户机进行测试,该虚拟客户机由一个非常简单的java应用程序组成,该应用程序进行套接字连接并向服务器发送字节流 我可以在for循环中设置要使用的连接数,因此如果我将其设置为100,它将启动100个连接到服务器并转储数据的线程 我想知道如何准确地检查我有多少并发连接 例如,如果我将客户端设置为进行1000个连接,那么在连接了大约600个套接字之后,我就开始获得Java 如何准确测量服务器可以处理的套接字连接数?,java,server,nio,Java,Server,Nio,我有一个TCP服务器,我正在用一个虚拟客户机进行测试,该虚拟客户机由一个非常简单的java应用程序组成,该应用程序进行套接字连接并向服务器发送字节流 我可以在for循环中设置要使用的连接数,因此如果我将其设置为100,它将启动100个连接到服务器并转储数据的线程 我想知道如何准确地检查我有多少并发连接 例如,如果我将客户端设置为进行1000个连接,那么在连接了大约600个套接字之后,我就开始获得ConnectException:Connection-seeded 这是否意味着服务器可以同时处理5
ConnectException:Connection-seeded
这是否意味着服务器可以同时处理500个套接字连接
我怎样才能准确地测量这个
如果我在每个套接字连接之间添加一个
Thread.sleep()
5纳秒,那么服务器根本不会崩溃。使用ExecutorService执行线程,而不是Thread.start()方法。
我希望这能解决你的问题
下面是一个示例代码供参考
public class TCPServer{
private ExecutorService pool = Executors.newCachedThreadPool();
public acceptClients(){
while(true){
pool.execute(new ClientListner(serverSocket.accept()));
}
}
}
public class ClientListner extends Thread{
private Socket client;
public ClientListner(Socket client) {
this.client = client;
}
public void run() {
//TODO add your code here
}
}
不要睡觉。你在测试错误的东西。如果没有睡眠,您将测试服务器可以接受的速度。通过睡眠,您可以测试一次可以存在多少个连接。不一样。好的,很高兴知道。因此,对于一次可以存在的连接数量,在建立连接后,睡眠需要在客户机线程中。是的,这更有意义。谢谢那我就开始写作了。能写一个正确的答案吗?对不起,我想你误解了我的问题。我想知道如何准确地确定我的服务器可以处理多少并发连接。