点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
环境准备
# Ubuntu/Debian
sudo apt-getupdate
sudo apt-get install openjdk-11-jdk
# 验证安装
java -version
export JMETER_HOME=/path/to/jmeter
export PATH=$PATH:$JMETER_HOME/bin
Jenkins插件配置
JMeter Plugin 在Jenkins管理后台 → 系统管理 → 插件管理 → 搜索"JMeter" → 安装。 Performance Plugin 用于结果可视化和阈值报警。 Email Extension Plugin 测试失败时发送通知邮件。
Jenkins作业布置
pipeline {
agent any
tools {
jmeter = 'JMeter 5.4.1' // 指定JMeter版本
}
stages {
stage('Prepare') {
steps {
清理旧结果
sh"rm -rf ${WORKSPACE}/results"
动态参数示例(可选)
env.USER_COUNT = "${params.user_count || 100}"
env.TEST_DURATION = "${params.test_duration || 600}"
}
}
stage('Run JMeter') {
steps {
jmeter(
testPlan: 'path/to/testplan.jmx',
jmeterHome: toolName: 'jmeter',
resultsFile: '**/results/*.jtl',
properties: [
'threads.count=${env.USER_COUNT}',
'test.duration.sec=${env.TEST_DURATION}',
'output.path=${WORKSPACE}/results'
],
并行执行设置(可选)
serverRampUp: 60,
concurrency: 200
)
}
}
stage('Generate Reports') {
steps {
performanceReport(
junit:'**/*.jtl',
csv:'**/*.csv',
html: true,
enabledModels: ['Errors', 'Latency'],
thresholdPassingRate: 90
)
}
}
}
post {
always {
清理构建产物(保留最近3次)
cleanWs(patterns:'**/*', maxDays:3)
}
success {
成功邮件通知
emailext(
subject:"JMeter Stress Test Passed: ${BUILD_NUMBER}",
body: "Test completed successfully. View results at ${BUILD_URL}",
to: 'team@example.com'
)
}
failure {
失败报警
emailext(
subject:"JMeter Stress Test FAILED: ${BUILD_NUMBER}",
body: "Test failed! Check console output: ${BUILD_URL}/console",
to: 'devops@example.com',
mimeType: 'text/html'
)
}
}
}
并行执行 使用concurrency参数控制同时运行的测试线程数。 动态参数 通过params实现测试参数化(需在Job配置中启用参数)。 结果存储 自动清理旧结果保留最新3次构建。 阈值报警 当成功率低于90%时触发失败通知。
高级调度策略
# 每日凌晨2点执行
0 2 * * *
# 每小时执行一次压力测试
0 * ** *
# 每周五下午5点执行全链路测试
0 17 * * 5
stage('Retry on Failure') {
when { expression { currentBuild.result == 'FAILURE' } }
steps {
input"Proceed with retry?"
jmeter(...)
}
}
env.TEST_ENV = "${params.env || 'staging'}"
jmeter(
properties: [
'env.url=http://${env.TEST_ENV}.example.com'
]
)
结果分析与优化
访问Jenkins仪表盘查看; 平均响应时间趋势图; 错误率热力图; TPS波动曲线。
- threshold:
type: "RESPONSE_TIME"
metric: "average"
value: 2000
operator: "<="
- threshold:
type: "ERROR_RATE"
metric: "percentage"
value: 5
operator: "<="
# 在Jenkins启动脚本中配置
JAVA_ARGS="-Xms4096m -Xmx8192m -server"
使用CSV文件参数化; 启用HTTP缓存; 减少不必要的JSR223脚本。
常见排查问题
JMeter安装目录; 测试结果存储路径; 被测系统资源。
# 监控CPU和内存
top -m
vmstat 1 5
jmeter(
distributed: true,
serverHosts: 'jmeter-master, jmeter-slave1, jmeter-slave2',
rmiPort: 4444
)
# jmeter.properties
log_file=jmeter.log
log_level=INFO
server.log_file=server.log
server.log_level=DEBUG

本文作者:宋振宝(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




