gpt4 book ai didi

java - 调整 Tomcat 内存消耗,套接字 : socket. rxBufSize

转载 作者:行者123 更新时间:2023-11-30 11:16:15 24 4
gpt4 key购买 nike

我有一个 Tomcat7 应用程序,使用“长轮询”为数万个并发连接提供服务。长轮询(简而言之)意味着在向客户端发回响应(新数据或 304 代码)之前,我会长时间保留请求。

我正试图将这些连接消耗的内存量降到最低。显而易见的低悬果是堆栈大小和应用程序缓冲区大小(请参阅下面我的 Catalina 连接器配置)。然而,这还不够。

我看到了“socket.rxBufSize”和“txBufSize”,它们的默认值相当大。这些文档是:

(int)The socket receive buffer (SO_RCVBUF) size in bytes. Default value is 25188

  1. 套接字缓冲区 - 我猜是操作系统套接字缓冲区,对吗?
  2. 在宏伟的计划中,这些缓冲区位于何处?它们有什么意义?
  3. 我在哪里可以控制 Tomcat 的最大套接字数?它是 maxThreads 的函数吗?一对一?
  4. 如果我去降低它们的值,什么值才有意义?缓冲区太小会怎样?

    connectionTimeout="3000"keepAliveTimeout="13000" acceptorThreadCount="4"enableLookups="false"maxConnections="100000"minSpareThreads="250"acceptCount="10000"compression="on" compressionMinSize="256"maxKeepAliveRequests="-1"socket.appReadBufSize="128"socket.appWriteBufSize="1024" maxThreads="500"

谢谢!

最佳答案

  1. 是的,下面是 native 套接字的缓冲区。
  2. 内存不多,因为一开始只能有这么多套接字。
  3. 不知道,请查看文档。
  4. 如果接收缓冲区很小,那么发送端将发送较少的数据以避免阻塞接收方。如果接收器处理它收到的任何数据的速度很快,它可以有一个大缓冲区,如果接收器较慢,接收缓冲区可以更小,因为实际吞吐量会更低(接收窗口无论如何都会自动调整,所以发送者不会淹没接收者)。

我不知道你是否会通过摆弄这些值获得任何显着的改进,但你总是可以尝试。

关于java - 调整 Tomcat 内存消耗,套接字 : socket. rxBufSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com