#jenkins #jmeter #jenkins-pipeline
#дженкинс #jmeter #дженкинс-конвейер
Вопрос:
У меня есть требование реализовать распределенное тестирование производительности, при котором у меня есть шанс запустить несколько подчиненных узлов параллельно, когда количество пользователей велико. Следовательно, я предполагаю запустить главный и подчиненный узлы.
Я пробовал весь способ запуска jmeter-сервера в фоновом режиме, поскольку он должен продолжать работать на подчиненном узле для получения входящего запроса.
Но все же я не могу запустить его в фоновом режиме.
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 amp;"
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)
Комментарии:
1. Там, где я пытался без его использования
nohub
, все работает нормально.
Ответ №1:
Мы не можем предоставить ответ, не увидев содержимое вашего файла nohup.out, который должен содержать выходные данные вашего скрипта.
Слепой выстрел: по умолчанию JMeter использует безопасную связь между ведущим и подчиненными устройствами, поэтому вам необходимо иметь хранилище ключей Java для хранения сертификатов, необходимых для шифрования запросов. Сценарий create-rmi-keystore.sh и вам необходимо запустить и выполнить настройку перед запуском подчиненного устройства JMeter.
Если вам не нужна зашифрованная связь между ведущим и подчиненными устройствами, вы можете отключить эту функцию, чтобы не создавать хранилище ключей, это можно сделать либо путем добавления следующего аргумента командной строки:
server.rmi.ssl.disable=true
Нравится:
nohup jmeter-server -Jserver.rmi.ssl.disable=true amp;
или, в качестве альтернативы, добавьте следующую строку в файл user.properties (находится в папке «bin» вашей установки JMeter)
server.rmi.ssl.disable=true
Дополнительная информация:
Комментарии:
1. Дмитрий, это содержимое, доступное в nohub.out
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[xx.0.3.210:44795](local),objID:[-794e5958:175a1502d58:-7fff, 1938170908024818443]]]
Ответ №2:
Это решается путем добавления внутри этапа узла.
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 amp;