无法在 Jenkins 管道的后台启动 Jmeter-Server。获取 ConnectException
Unable to start the Jmeter-Server in background in Jenkins pipeline. Getting ConnectException
我需要实施分布式性能测试,以便在用户数量较多时并行启动多个从属节点。因此我想启动主节点和从节点。
我一直尝试在后台启动 jmeter-server,因为它必须在从属节点中保持 运行 以接收传入请求。
但是,我仍然无法在后台启动它。
node(performance) {
properties([disableConcurrentBuilds()])
stage('Setup') {
cleanAndInstall()
checkout()
}
max_instances_to_boot = 1
for (val in 1..max_instances_to_boot) {
def instance_id = val
node_builder[instance_id] = {
timestamps {
node(node_label) {
stage('Node -> ' + instance_id + ' Launch') {
def ipAddr = ''
script {
ipAddr = sh(script: 'curl http://xxx.xxx.xxx.xxx/latest/meta-data/local-ipv4', returnStdout: true)
node_ipAddr.add(ipAddr)
}
cleanAndInstall()
checkout()
println "Node IP Address:"+node_ipAddr
dir('apache-jmeter/bin') {
exec_cmd = "nohup sh jmeter-server -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=$ipAddr > ${env.WORKSPACE}/jmeter-server-nohup.out &"
println 'Server Execution Command: ' + exec_cmd
sh exec_cmd
}
sleep time: 1, unit: 'MINUTES'
sh """#!/bin/bash
echo "============ jmeter-server.log ============"
cat jmeter-server.log
echo "============ nohup.log ============"
cat jmeter-server-nohup.out
"""
}
}
}
}
}
parallel node_builder
stage('Execution') {
exec_cmd = "apache-jmeter/bin/jmeter -n -t /home/jenkins/workspace/release-performance-tests/test_plans/delights/fd_regression_delight.jmx -e -o /home/jenkins/workspace/release-performance-tests/Performance-Report -l /home/jenkins/workspace/release-performance-tests/JTL-FD-773.jtl -R xx.0.3.210 -Jserver.rmi.ssl.disable=true -Dclient.tries=3"
println 'Execution Command: ' + exec_cmd
sh exec_cmd
}
}
出现以下错误
Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: xx.0.3.210; nested exception is:
java.net.ConnectException: Connection refused (Connection refused)
我们无法在没有看到您的 nohup.out file 内容的情况下提供答案,该内容应该包含您的脚本输出。
盲拍:默认情况下,JMeter 在主从之间使用安全通信,因此您需要有一个 Java Keystore to contain certificates necessary for the requests encryption. The script is create-rmi-keystore.sh 并且需要在启动 JMeter Slave 之前启动并执行配置。
如果您不需要主从之间的加密通信,您可以关闭此功能,这样您就不会创建密钥库,可以通过添加以下 command-line 参数来完成:
server.rmi.ssl.disable=true
喜欢:
nohup jmeter-server -Jserver.rmi.ssl.disable=true &
或者将下一行添加到 user.properties 文件(位于 JMeter 安装的“bin”文件夹中)
server.rmi.ssl.disable=true
更多信息:
这是通过在节点阶段添加来解决的。
JENKINS_NODE_COOKIE=dontKillMe nohup sh jmeter-server -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=xx.xx.xx.xxx > ${env.WORKSPACE}/jmeter-server-nohup.out &
我需要实施分布式性能测试,以便在用户数量较多时并行启动多个从属节点。因此我想启动主节点和从节点。
我一直尝试在后台启动 jmeter-server,因为它必须在从属节点中保持 运行 以接收传入请求。
但是,我仍然无法在后台启动它。
node(performance) {
properties([disableConcurrentBuilds()])
stage('Setup') {
cleanAndInstall()
checkout()
}
max_instances_to_boot = 1
for (val in 1..max_instances_to_boot) {
def instance_id = val
node_builder[instance_id] = {
timestamps {
node(node_label) {
stage('Node -> ' + instance_id + ' Launch') {
def ipAddr = ''
script {
ipAddr = sh(script: 'curl http://xxx.xxx.xxx.xxx/latest/meta-data/local-ipv4', returnStdout: true)
node_ipAddr.add(ipAddr)
}
cleanAndInstall()
checkout()
println "Node IP Address:"+node_ipAddr
dir('apache-jmeter/bin') {
exec_cmd = "nohup sh jmeter-server -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=$ipAddr > ${env.WORKSPACE}/jmeter-server-nohup.out &"
println 'Server Execution Command: ' + exec_cmd
sh exec_cmd
}
sleep time: 1, unit: 'MINUTES'
sh """#!/bin/bash
echo "============ jmeter-server.log ============"
cat jmeter-server.log
echo "============ nohup.log ============"
cat jmeter-server-nohup.out
"""
}
}
}
}
}
parallel node_builder
stage('Execution') {
exec_cmd = "apache-jmeter/bin/jmeter -n -t /home/jenkins/workspace/release-performance-tests/test_plans/delights/fd_regression_delight.jmx -e -o /home/jenkins/workspace/release-performance-tests/Performance-Report -l /home/jenkins/workspace/release-performance-tests/JTL-FD-773.jtl -R xx.0.3.210 -Jserver.rmi.ssl.disable=true -Dclient.tries=3"
println 'Execution Command: ' + exec_cmd
sh exec_cmd
}
}
出现以下错误
Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: xx.0.3.210; nested exception is:
java.net.ConnectException: Connection refused (Connection refused)
我们无法在没有看到您的 nohup.out file 内容的情况下提供答案,该内容应该包含您的脚本输出。
盲拍:默认情况下,JMeter 在主从之间使用安全通信,因此您需要有一个 Java Keystore to contain certificates necessary for the requests encryption. The script is create-rmi-keystore.sh 并且需要在启动 JMeter Slave 之前启动并执行配置。
如果您不需要主从之间的加密通信,您可以关闭此功能,这样您就不会创建密钥库,可以通过添加以下 command-line 参数来完成:
server.rmi.ssl.disable=true
喜欢:
nohup jmeter-server -Jserver.rmi.ssl.disable=true &
或者将下一行添加到 user.properties 文件(位于 JMeter 安装的“bin”文件夹中)
server.rmi.ssl.disable=true
更多信息:
这是通过在节点阶段添加来解决的。
JENKINS_NODE_COOKIE=dontKillMe nohup sh jmeter-server -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=xx.xx.xx.xxx > ${env.WORKSPACE}/jmeter-server-nohup.out &