JMeter 可以使用服务器公网 IP,但不能使用域名

JMeter 可以使用服务器公网 IP,但不能使用域名

我想在我的服务器上使用域名 blazingsocket.tk 测试 REST API

我在本地使用 JMeter 设置了 HTTP 请求测试,以下是配置:

  • 协议:http
  • 服务器名称或 IP:blazingsocket.tk
  • 端口:80

这是我收到的:非 HTTP 响应代码:java.net.UnknownHostException

我将“服务器名称或 IP”更改为我的服务器公共 IP,然后它就可以正常工作了。

我关闭了服务器上的防火墙,nginx 网络服务器->没有帮助。

Web 浏览器和 Postman 能够解析主机名,所以我认为 DNS 没有任何问题。

你能解释一下原因吗?

答案1

我能想到的唯一原因是 Java 尝试使用以下方法将 DNS 主机名与 IP 地址进行匹配IPv6 堆栈并以某种方式在某处失败。

解决方案如下:

  1. 将 Java 更新至最新版本
  2. 强制 Java 使用IPv4 堆栈,即运行 JMeter 如下:

    ./jmeter -Djava.net.preferIPv4Stack=true ....
    

    如果有帮助,您可以通过添加下一行来使更改永久生效系统属性文件(位于 JMeter 安装的“bin”文件夹中)

    java.net.preferIPv4Stack=true 
    

    需要重新启动 JMeter 才能获取属性

参考:

相关内容