为什么 PerfMon Server Agent 只监听 tcp6?

Why PerMon Sever Agent listens only on tcp6?

通过执行以下命令在服务器上启动代理

$ ./startAgent.sh

INFO 2018-03-27 18:31:04.981 [kg.apc.p] (): Binding UDP to 4444

INFO 2018-03-27 18:31:05.982 [kg.apc.p] (): Binding TCP to 4444

INFO 2018-03-27 18:31:05.986 [kg.apc.p] (): JP@GC Agent v2.2.0 started

使用 telnet

从其他服务器检查它与此代理的连接
$ telnet 192.168.1.31 4444

Could not open connection to the host, on port 4444:Connect failed

如果使用 ipv6 而不是 ipv4,它可以连接到该端口。

$ telnet fe80::250:56ff:xxxx:xxxx 4444

检查地址和端口,它只监听tcp6,所以ipv6可以连接,ipv4不能。

$netstat -ano|grep 4444

tcp6       0      0 :::4444                 :::*                    LISTEN      off (0.00/0/0)

udp6       0      0 :::4444                 :::*                                off (0.00/0/0)

我的问题是为什么服务器代理只监听 tcp6:4444? 有什么办法可以让他监听ipv4吗?

修改 startAgent.sh 文件并添加 -Djava.net.preferIPv4Stack=true 行,使其看起来像:

#!/bin/sh

java -Djava.net.preferIPv4Stack=true -jar $(dirname [=10=])/CMDRunner.jar --tool PerfMonAgent "$@"

为了与 JMeter 玩同样的把戏,将类似的行添加到 user.properties 文件(位于 JMeter 安装的 "bin" 文件夹中)

java.net.preferIPv4Stack=true

参考文献: