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

PerMon Server Agent仅监听tcp6?IPv4连接失败技术咨询

PerMon Server Agent仅监听tcp6的原因分析及解决办法

这是个在IPv6启用环境里很常见的Java程序监听问题,我来帮你拆解原因和对应的解决办法:

原因分析

  • JVM默认监听优先级:Java程序在同时支持IPv4和IPv6的系统上,默认会优先创建IPv6套接字进行监听。虽然理论上IPv6套接字应该兼容IPv4连接(通过IPv4映射的IPv6地址),但部分系统的网络配置、防火墙规则或者内核参数可能导致这种兼容性失效,最终只能通过纯IPv6地址访问。
  • Agent启动未指定IP版本:JP@GC Agent(也就是你用的PerMon Server Agent)的默认启动脚本没有显式指定绑定到IPv4地址,所以JVM按照默认逻辑选择了IPv6监听模式。

解决办法

临时生效:修改启动脚本

直接修改startAgent.sh中的Java启动命令,添加强制优先IPv4的JVM参数:
找到脚本里的java启动行,添加-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false参数,修改后的命令示例:

java -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -jar ./CMDRunner.jar --tool PerfMonAgent

修改完成后重启Agent,然后用ss -tulpn | grep 4444检查,会看到监听地址变成0.0.0.0:4444(IPv4),而不是:::4444(IPv6)。

永久生效:全局JVM配置

如果不想每次修改启动脚本,可以把参数加到系统级的JVM环境变量里:

  1. 编辑/etc/profile或者用户目录下的~/.bashrc文件,添加以下内容:
export JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false"
  1. 执行source /etc/profile(系统级)或者source ~/.bashrc(用户级)让配置立即生效,之后启动Agent就会自动应用IPv4优先的规则。

备选方案:临时禁用IPv6(谨慎使用)

如果你的服务器不需要IPv6支持,可以临时禁用它来强制Agent监听IPv4:

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

⚠️ 注意:这个操作是系统级的,会影响所有依赖IPv6的服务,除非确定不需要IPv6,否则不推荐使用。

验证步骤

  1. 重启PerMon Server Agent后,查看日志确认绑定到IPv4的4444端口;
  2. 从其他服务器执行telnet 192.168.1.31 4444,应该能正常建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:23:58