java - 当 HTTP 通过 TCP 工作时,如何使用 HTTP (Tomcat) 创建超过 14000 个客户端,因此创建了套接字

标签 java sockets

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

在 TCP 上我可以同时创建 1024 个客户端。如果我创建更多客户端,则会出现打开文件过多错误。但是使用 Tomcat 我可以创建超过 14000 个客户端。

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

这怎么可能?

最佳答案

我的猜测是...

  1. 您正在使用 ulimit 高于 1024 的用户(而不是您的交互式 shell,它是受限的)运行 tomcat
  2. 您的 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/

相关文章:

java - 导航栏的 Onclick 监听器

java - 什么是测试预言机,它有什么用?

java - Hybris 5 trail,入门

java - 如何将字节码翻译成机器 native 代码

java - 通过设置最大宽度使 JLabel 包装它的文本

javascript - 多个 http.get 请求的套接字挂起错误

c# - 如果数组恰好是 16 个字节并且取自成功接收的 UDP 套接字,那么 new Guid(byte[]) 是否总是会生成有效的 guid?

c - zmq_ctx_term() 在套接字关闭时阻塞

python - 应用程序之间通过本地 TCP/IP 套接字进行通信

javascript - HTML5 的平台独立容器,可以从套接字发送/接收数据