jmeter分布式部署lunx下 root用户运行Python3 deploy_jdk_jmeter.py

# -*- coding: UTF-8 -*-
"""
@author:jcs
@file:deploy_jdk_jmeter.py
@time:2022/08/26
"""
import os
import subprocess


def doenload_file():
    command = 'yum install -y java-1.8.0-openjdk.x86_64' \
              ' && ' \
              'wget https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/apache-jmeter-5.5.tgz' \
              ' --no-check-certificate' \
              ' && ' \
              'tar -zxvf apache-jmeter-5.5.tgz' \
              ' && ' \
              'rm -rf apache-jmeter-5.5.tgz'
    os.system(command)


def jmeter_config(ip, ips, MaxMetaspaceSize):
    doenload_file()
    pwd_path = os.popen('pwd').read().rstrip()
    jmeter_path = f'{pwd_path}/apache-jmeter-5.5'
    jmeter_bin = f'{pwd_path}/apache-jmeter-5.5/bin'
    jmeter_properties_path = f'{jmeter_bin}/jmeter.properties'
    jmeter_server_path = f'{jmeter_bin}/jmeter-server'
    jmeter_sh_path = f'{jmeter_bin}/jmeter'
    java_path = os.popen('which java').read().rstrip()

    with open(jmeter_properties_path, 'r+') as j1, open(jmeter_sh_path, 'r+') as j2, open(jmeter_server_path, 'r+') as j3:
        jmeter_properties_txt = j1.read().rstrip()
        new_jmeter_properties_txt = jmeter_properties_txt.replace('#server_port=1099', 'server_port=1099') \
            .replace('remote_hosts=127.0.0.1', f'remote_hosts={ips}') \
            .replace('#server.rmi.ssl.disable=false', 'server.rmi.ssl.disable=true')
        j1.seek(0)
        j1.truncate()
        j1.write(new_jmeter_properties_txt)

        jmeter_sh_txt = j2.read().rstrip()
        new_jmeter_properties_txt = jmeter_sh_txt \
            .replace('"$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"',
                     f'"{java_path}" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"') \
            .replace('##                    Defaults to "-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"',
                     f'##                    Defaults to "-Xms10g -Xmx10g -XX:MaxMetaspaceSize={MaxMetaspaceSize}m"')
        j2.seek(0)
        j2.truncate()
        j2.write(new_jmeter_properties_txt)

        jmeter_server_txt = j3.read().rstrip()
        new_jmeter_server_txt = jmeter_server_txt.replace('#RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx', f'RMI_HOST_DEF=-Djava.rmi.server.hostname={ip}')
        j3.seek(0)
        j3.truncate()
        j3.write(new_jmeter_server_txt)
    os.popen('touch restart_server.sh start_jmeter_server.sh')
    with open('restart_server.sh', 'a+') as r1, open('start_jmeter_server.sh', 'a+') as s1:
        restart_txt = "#!/bin/bash\nsudo ps -ef | grep jmeter |grep -v grep | awk '{print $2}' |xargs kill -9\nsudo nohup /root/apache-jmeter-5.5/bin/jmeter-server -Djava.rmi.server.hostname={ip_txt} >nohup.out 2>&1 &".replace('{ip_txt}', f'{ip}')
        start_txt = f"#!/bin/bash\nnohup /root/apache-jmeter-5.5/bin/jmeter-server -Djava.rmi.server.hostname={ip} >nohup.out 2>&1 &"
        r1.write(restart_txt)
        s1.write(start_txt)
        os.system('chmod 777 restart_server.sh start_jmeter_server.sh')

    with open("/etc/profile", 'a+') as profile:
        export = f"\nexport JMETER={jmeter_path}\nexport PATH={jmeter_path}/bin:$PATH"
        profile.write(export)

    subprocess.call('source /etc/profile && jmeter -v', shell=True)
    print(f"以配置调度机执行机共存模式ip:{ip}:1099\n执行机:{ips}\n内存池大小:{MaxMetaspaceSize}")
    os.system('./start_jmeter_server.sh')
    print('启动jmeter_server')


if __name__ == '__main__':
    # jmeter部署  如果报错root运行
    ip = "10.200.26.132" #本机ip
    ips = "10.200.26.123:1099" #执行机地址
    MaxMetaspaceSize = 61440 #内存池
    jmeter_config(ip, ips, MaxMetaspaceSize)



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jcs ssc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值