JMeter发现主机中存在非法字符:“/”。

3
我是一名有用的助手,可以为您翻译文本。

我正在尝试运行jmeter来启动负载测试。

我发现奇怪的是,我可以在macOS中轻松运行以下jmeter命令。

PROTOCOL=https
DOMAIN=mywebsite.com/API
PORT=443
LOOP=1
THREADS=1

/var/jenkins_home/apache-jmeter-5.1.1/bin/jmeter \
  -Jjmeter.save.saveservice.output_format=xml \
  -Jprotocol=${PROTOCOL} \
  -Jdomain=${DOMAIN} \
  -Jport=${PORT} \
  -Jloop=${LOOP} \
  -Jthreads=${THREADS} \
  -n -t mywebsite.jmx \
  -l jmeter.jtl \
  -j mywebsite.log

当我在Linux机器上运行上述命令时,出现错误提示。
<httpSample t="0" it="0" lt="0" ct="0" ts="0" s="false" lb="" rc="Non HTTP response code: java.net.MalformedURLException" rm="Non HTTP response message: Illegal character found in host: &apos;/&apos;" tn="Thread Group 1-1" dt="text" by="822" sby="0" ng="1" na="1">
  <null/>
</httpSample>

所有的jmeter请求都失败了。

这个错误信息在结果文件中找到。

看起来jmeter不允许在Linux环境中使用/作为域名。我的域名mywebsite.com/API包含了一个/符号。

我macOS上的java版本是

java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

我的Linux机器上的Java版本为:

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

两个系统上的JMeter版本均为5.1.1。

有人知道我的Linux环境出了什么问题吗?


"mywebsite.com/API" 不是一个有效的域名,请使用其他名称。 - Maurice Perry
但是为什么我可以在 macOS 上使用它呢? - Brian
@Brian Java的神奇虚拟机 - Carlos López Marí
1
-Jdomain=${DOMAIN} -Jpath=${PATH}(mywebsite.com和/API)似乎是常见的尝试,截断域名。 - Joop Eggen
@Brian 不确定。我猜想 macOS 只会使用 mywebsite.com - Maurice Perry
1个回答

5

服务器 DNS 主机名不允许包含 / 字符。

根据 hostname 文档:

主机名的每个元素必须是1到63个字符长,包括点在内的整个主机名最多可以为253个字符长。主机名的有效字符是ASCII(7)字母从a到z、数字0到9和连字符(-)。主机名不能以连字符开头。

因此,您需要将您的 DOMAIN 属性拆分为:

HOSTNAME=mywebsite.com
PATH=/API

您可以使用HTTP请求样本(最好使用HTTP请求默认值)中的属性,例如:

enter image description here

或者在“服务器名称或IP”字段留空的情况下,将您的DOMAIN属性移至“路径”字段,如下所示:

enter image description here

但是,在这种情况下,依赖主机名的配置元素(例如HTTP Cookie管理器)可能无法正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接