Java 调整Tomcat内存消耗,套接字:socket.rxBufSize
我有一个Tomcat7应用程序,使用“长轮询”服务于数以万计的并发连接。 长轮询(简而言之)意味着在向客户机发回响应(新数据或304代码)之前,我会长时间保留请求 我正在尝试最小化这些连接所消耗的内存量。 明显的低挂果实是堆栈大小和应用程序缓冲区大小(请参阅下面我的Catalina连接器配置)。 然而,这还不够 我看到了“socket.rxBufSize”和“txBufSize”,它们的默认值相当大。 这些文件包括: (int)套接字接收缓冲区(SO_RCVBUF)大小(以字节为单位)。默认值为25188Java 调整Tomcat内存消耗,套接字:socket.rxBufSize,java,performance,sockets,tomcat,Java,Performance,Sockets,Tomcat,我有一个Tomcat7应用程序,使用“长轮询”服务于数以万计的并发连接。 长轮询(简而言之)意味着在向客户机发回响应(新数据或304代码)之前,我会长时间保留请求 我正在尝试最小化这些连接所消耗的内存量。 明显的低挂果实是堆栈大小和应用程序缓冲区大小(请参阅下面我的Catalina连接器配置)。 然而,这还不够 我看到了“socket.rxBufSize”和“txBufSize”,它们的默认值相当大。 这些文件包括: (int)套接字接收缓冲区(SO_RCVBUF)大小(以字节为单位)。默认值为
我不知道你是否会因为摆弄这些价值观而得到显著的改进,但你可以一直尝试。谢谢。2.如果max threads=500,这意味着IO有500个线程,这意味着500个套接字+-,对吗?4.AFAIK TCP数据包通常为1500(除非是碎片),巨型帧通常通过公共网络进行切片。但无论如何,发送端如何知道或关心接收缓冲区的大小?中间有一堆路由器和交换机如果接收端因为没有接受数据包的缓冲区而不断丢弃数据包,它会告诉发送端不要发送这么多数据(你说的数据包不太大是对的,但发送方一次可以发送更多的数据包)。我已经有一段时间没有读过TCP规范了,但也许你想这么做?:)TCP接收窗口是接收者限制发送者的一种方式。