HTTP 协议(protocol)在 TCP/IP 上工作。所以事实上我们可以说,如果我们连接一个客户端,那么无论它是 TCP 还是 HTTP,都会创建一个套接字,从而创建一个文件。 Tomcat 在 HTTP 上工作。
在 TCP 上我可以同时创建 1024 个客户端。如果我创建更多客户端,则会出现打开文件过多错误。但是使用 Tomcat 我可以创建超过 14000 个客户端。
如果我使用 Tomcat,那么我不会使用 ulimit 来增加操作系统的文件限制。
这怎么可能?
最佳答案
我的猜测是...
- 您正在使用 ulimit 高于 1024 的用户(而不是您的交互式 shell,它是受限的)运行 tomcat
- 您的 startup.sh 脚本中有一个 ulimit 语句。
要查明是不是后者...
grep ulimit ./bin/*
另外,请告诉我们您是如何启动 tomcat 的,我们将一探究竟!要查看您的 tomcat 在哪个用户下运行,请尝试这样的操作...
ps aux | grep tomcat | cut -d " " -f 1
输出将显示使用用户名和进程 ID。我敢打赌,这与您正在运行的不同。
关于java - 当 HTTP 通过 TCP 工作时,如何使用 HTTP (Tomcat) 创建超过 14000 个客户端,因此创建了套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833194/