Tomcat socket.soKeepAlive 的默认值

Tomcat default value for socket.soKeepAlive

我正在尝试调试与 keep-alives/connection 重置相关的问题,发现 tomcat documentation says:

socket.soKeepAlive:

(bool)Boolean value for the socket's keep alive setting (SO_KEEPALIVE). JVM default used > if not set.

这不是我正在调试的应用程序设置的。有没有办法找出 jvm 使用的默认值? (例如通过检查系统 属性?)

我无法通过检查实际的保持活动行为来测试该行为,因为我无权访问 VM。

根据更多研究和实验自行回答。

socket.soKeepAlive 的默认值:来自 SocketOptions.SO_KEEPALIVE 的 JVM 文档:

The initial value of this socket option is FALSE. The socket option may be enabled or disabled at any time.

另请注意:

When the SO_KEEPALIVE option is enabled the operating system may use a keep-alive mechanism to periodically probe the other end of a connection

据我了解,这意味着 tomcat 不会探测客户端 以检查已建立的连接是否处于活动状态 默认情况下

keepAliveTimeout的默认值:默认值是使用已为 connectionTimeout 属性设置的值

在我的例子中,这没有被反映出来。 connectionTimeout 设置为 10 秒,但 tomcat 响应仍然保持活动 headers 设置为仅 5 秒。

但是,我发现应用程序作者还将名为 socket.soTimeout 的属性设置为 5 秒,tomcat 将其描述为:

This is equivalent to standard attribute connectionTimeout.

我发现当 conncetionTimeoutsocket.soTimeout 都设置时,socket.soTimeout 优先,因为更改 socket.soTimeout 值会导致 keep alive [=46] 返回值=] 进行相应更改。