Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 当HTTP在TCP上工作时,如何使用HTTP(Tomcat)创建超过14000个客户机,从而创建套接字_Java_Sockets - Fatal编程技术网

Java 当HTTP在TCP上工作时,如何使用HTTP(Tomcat)创建超过14000个客户机,从而创建套接字

Java 当HTTP在TCP上工作时,如何使用HTTP(Tomcat)创建超过14000个客户机,从而创建套接字,java,sockets,Java,Sockets,HTTP协议在TCP/IP上工作。所以实际上,我们可以说,如果我们连接一个客户端,那么无论它是TCP还是HTTP,都会创建一个套接字,从而创建一个文件。Tomcat在HTTP上工作 在TCP上,我可以同时创建1024个客户端。如果我创建了更多的客户端,那么我会得到太多的文件打开错误。但是使用Tomcat我可以创建超过14000个客户端 如果我使用Tomcat,那么我不会使用ulimit来增加操作系统的文件限制 怎么可能?允许进程使用的文件描述符数量有限制。 在Unix系统上,套接字使用文件描述符

HTTP协议在TCP/IP上工作。所以实际上,我们可以说,如果我们连接一个客户端,那么无论它是TCP还是HTTP,都会创建一个套接字,从而创建一个文件。Tomcat在HTTP上工作

在TCP上,我可以同时创建1024个客户端。如果我创建了更多的客户端,那么我会得到太多的文件打开错误。但是使用Tomcat我可以创建超过14000个客户端

如果我使用Tomcat,那么我不会使用ulimit来增加操作系统的文件限制


怎么可能?

允许进程使用的文件描述符数量有限制。 在Unix系统上,套接字使用文件描述符


要超过1024个文件描述符的限制,可以使用ulimit命令。

进程允许使用的文件描述符数量有限制。 在Unix系统上,套接字使用文件描述符


要超过1024个文件描述符的限制,可以使用ulimit命令。

这是操作系统对manny资源打开方式的限制。在*NIX中,您可以使用ulimit()控制这些限制这是您的操作系统如何打开manny资源的限制。在*NIX范围内,您可以使用ulimit()控制这些限制。

我的猜测是

  • 您正在使用ulimit高于1024的用户(而不是受限制的交互式shell)运行tomcat
  • 您的startup.sh脚本中有一个ulimit语句 要知道是否是后者

    grep ulimit ./bin/*
    
    另外,请告诉我们您是如何开始tomcat的,我们将对此进行深入了解!要查看tomcat在哪个用户下运行,请尝试以下操作

    ps aux | grep tomcat | cut -d " " -f 1
    

    输出将显示使用用户名和进程id。我打赌这与您正在运行的不同。

    我猜是

  • 您正在使用ulimit高于1024的用户(而不是受限制的交互式shell)运行tomcat
  • 您的startup.sh脚本中有一个ulimit语句 要知道是否是后者

    grep ulimit ./bin/*
    
    另外,请告诉我们您是如何开始tomcat的,我们将对此进行深入了解!要查看tomcat在哪个用户下运行,请尝试以下操作

    ps aux | grep tomcat | cut -d " " -f 1
    
    输出将显示使用用户名和进程id。我打赌这与您正在运行的不同。

    当您说“使用Tomcat我可以创建14000多个客户端”时,“客户端”到底是什么意思

    您的应用程序是否可能正在模拟14000个并发用户(例如,每个用户可能每10秒向服务器发出一个HTTP请求,每个请求需要0.01秒,因此tomcat在任何给定时间只需要14个并发连接)

    使用
    netstat-n | grep8080
    将列出到tomcat的所有活动HTTP连接(假设您正在侦听端口8080,如果没有,请调整以适应)。这将让您看到实际使用的TCP连接数

    您能否发布一些关于负载测试程序实际功能的详细信息?这可能有助于理解您看到的内容。

    当您说“使用Tomcat我可以创建14000多个客户端”时,“客户端”到底是什么意思

    您的应用程序是否可能正在模拟14000个并发用户(例如,每个用户可能每10秒向服务器发出一个HTTP请求,每个请求需要0.01秒,因此tomcat在任何给定时间只需要14个并发连接)

    使用
    netstat-n | grep8080
    将列出到tomcat的所有活动HTTP连接(假设您正在侦听端口8080,如果没有,请调整以适应)。这将让您看到实际使用的TCP连接数


    您能否发布一些关于负载测试程序实际功能的详细信息?这可能有助于理解您看到的内容。

    如果我使用tomcat,我不会使用ulimit来增加操作系统的文件限制。请参见下面Stu的回答-tomcat在不同的用户下运行,因此具有不同的限制,或者ulimit调用是tomcat star的一部分tup脚本。如果我使用tomcat,我不会使用ulimit来增加操作系统的文件限制。请参阅下面Stu的回答-tomcat在不同的用户下运行,因此具有不同的限制,或者ulimit调用是tomcat启动脚本的一部分。如果我使用tomcat,我不会使用ulimit来增加操作系统的文件限制。如果我使用tomcat,我不会使用ulimit来增加操作系统的文件限制考虑到我的操作系统文件限制。我已经安装了netbeans并管理了tomcat。然后我创建了一个可以创建14000多个客户端的应用程序,然后我部署了该应用程序,然后我运行了该应用程序。我99%确信您使用的不是您自己的帐户运行tomcat。我将更新答案,以帮助说明是否存在这种情况。我已经安装了netbeans并管理了tomcat。然后我创建了一个可以创建14000多个客户端的应用程序,然后我部署了该应用程序,然后我运行了该应用程序。我99%确信您运行tomcat的帐户不是您自己的帐户。我将更新答案,以帮助说明是否存在这种情况。