Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何准确测量服务器可以处理的套接字连接数?_Java_Server_Nio - Fatal编程技术网

Java 如何准确测量服务器可以处理的套接字连接数?

Java 如何准确测量服务器可以处理的套接字连接数?,java,server,nio,Java,Server,Nio,我有一个TCP服务器,我正在用一个虚拟客户机进行测试,该虚拟客户机由一个非常简单的java应用程序组成,该应用程序进行套接字连接并向服务器发送字节流 我可以在for循环中设置要使用的连接数,因此如果我将其设置为100,它将启动100个连接到服务器并转储数据的线程 我想知道如何准确地检查我有多少并发连接 例如,如果我将客户端设置为进行1000个连接,那么在连接了大约600个套接字之后,我就开始获得ConnectException:Connection-seeded 这是否意味着服务器可以同时处理5

我有一个TCP服务器,我正在用一个虚拟客户机进行测试,该虚拟客户机由一个非常简单的java应用程序组成,该应用程序进行套接字连接并向服务器发送字节流

我可以在for循环中设置要使用的连接数,因此如果我将其设置为100,它将启动100个连接到服务器并转储数据的线程

我想知道如何准确地检查我有多少并发连接

例如,如果我将客户端设置为进行1000个连接,那么在连接了大约600个套接字之后,我就开始获得
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
  }
}

不要睡觉。你在测试错误的东西。如果没有睡眠,您将测试服务器可以接受的速度。通过睡眠,您可以测试一次可以存在多少个连接。不一样。好的,很高兴知道。因此,对于一次可以存在的连接数量,在建立连接后,睡眠需要在客户机线程中。是的,这更有意义。谢谢那我就开始写作了。能写一个正确的答案吗?对不起,我想你误解了我的问题。我想知道如何准确地确定我的服务器可以处理多少并发连接。