环境
- JMeter 5.5
- Jdk11
- 压测服务器(VPN连接远程服务器)
- 压力机(本地windows机器)
- ServerAgent-2.2.1
- jmeter-plugins-perfmon-2.1
问题描述
使用 jp@gc – PerfMon Metrics Collector 连接远程 ServerAgent 时,尽管通过 VPN 下的 telnet 192.168.10.111 4444 或 Test-NetConnection 显示 TCP 通道可达,但 JMeter 的jp@gc - PerfMon Metrics Collector一直报错“Agent is unreachable via TCP”。经过本地回环测试确认插件与 Agent 版本、Java 环境、JAR 放置路径均无问题,最终发现是 VPN/虚拟网卡 在拦截或假应答了 4444 端口,导致流量并未真正到达 ServerAgent。
解决步骤
-
本地回环验证
- 在本机启动 ServerAgent(或 CMDRunner)并切换到 Java 8 环境(用Java11时, ServerAgent启动异常),确认
sigar本地库无崩溃。 - 在 JMeter 本地将 Server Host 填
127.0.0.1:4444,用 Test Connection 验证本地链路通畅。
- 在本机启动 ServerAgent(或 CMDRunner)并切换到 Java 8 环境(用Java11时, ServerAgent启动异常),确认
-
诊断 VPN 隧道外网络
- 在不指定源网卡的情况下,Windows 的
Test-NetConnection、telnet被 VPN 虚拟网卡假应答,不具参考价值。 - 使用
-SourceAddress参数、PortQry 或断开 VPN 后,再次验证直连 192.168.10.111:4444,确认网络到底是否真正打通。
- 在不指定源网卡的情况下,Windows 的
-
搭建 SSH 本地端口转发
-
在 Windows 上以管理员身份打开终端,执行:
ssh -N -L 14444:127.0.0.1:4444 root@192.168.10.111本地监听 14444,转发到远端 4444。
-
在 JMeter 中将 Server Host 设置为
localhost:14444,此时 Test Connection 成功,PerfMon 开始正常采集远程指标。
-
经验与收获
-
Jdk版本
- ServerAgent.jar启动时如果异常检查Jdk版本。
-
本地回环测试的重要性
- 先在本地回环(127.0.0.1)验证 Agent 与插件链路是否可用,再排除网络层因素。
-
网络工具的盲点
- Windows 默认的
Test-NetConnection或telnet,在有 VPN/代理干预时,会返回 假可达。要使用更底层或指定源地址的工具(PortQry、nmap、-SourceAddress参数)才能得出真实结论。
- Windows 默认的
-
SSH 隧道原理
- SSH 隧道能把被拦截的端口流量包裹在允许的 SSH(22)通道里,常用于穿透防火墙、VPN 或内网穿透。