You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat socket.soKeepAlive默认值查询:无VM权限时如何获取JVM默认配置

关于Tomcat socket.soKeepAlive 未配置时的默认值说明

首先明确核心逻辑:JVM 没有提供可查询的系统属性来控制 Socket SO_KEEPALIVE 的默认值,这个参数的默认行为由 JDK 的 Socket 实现固定,和操作系统无关。


具体确认方法:

  • 所有主流版本的 OpenJDK/Oracle JDK(JDK 6 及更高版本)中,java.net.Socket 类的默认实现硬编码了 SO_KEEPALIVE 初始值为 false,即默认关闭 TCP 保活探测,你可以直接查阅对应版本 JDK 的 java.net.Socket 源码确认该逻辑。
  • 商用发行版 JDK(IBM J9、Azul Zulu 等)的 Socket 实现均与 OpenJDK 标准对齐,默认 SO_KEEPALIVE 值同样为 false,不存在特殊修改。
  • 若后续你需要开启 SO_KEEPALIVE,直接在 Tomcat 的 HTTP 连接器配置中显式设置 socket.soKeepAlive="true" 即可,无需依赖默认值。

额外补充(开启 SO_KEEPALIVE 后的生效参数):

如果开启了 SO_KEEPALIVE,后续的保活探测间隔、探测次数、空闲触发时间等参数,由操作系统的TCP内核参数决定,常见操作系统默认值如下:

  • Linux 系统默认:tcp_keepalive_time=7200秒(空闲2小时后发起探测)、tcp_keepalive_intvl=75秒、tcp_keepalive_probes=9次
  • Windows 系统默认:KeepAliveTime=7200秒、KeepAliveInterval=1秒、TcpMaxDataRetransmissions=5次

内容的提问来源于stack exchange,提问作者Erric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:15:03