简介:Locust是一个Python编写的开源性能测试工具,它可以通过编写Python代码来模拟用户行为并进行压力测试。虽然Locust本身不直接支持对shell或者SSH进行压测,但可以编写自定义的插件或者使用第三方库来实现这样的功能。如果想要通过SSH进行压力测试,可以考虑使用paramiko库来与SSH进行交互,并将其集成到你的Locust脚本中。
历史攻略:
locust2.0+教程:001 - 安装和目录结构
locust2.0+教程:002 - 快速使用
locust2.0+教程:003 - headless无界面模式
locust2.0+教程:004 - 等待时间和执行权重
locust2.0+教程:005 - on_start和on_stop
locust2.0+教程:006 - @tag标签装饰器
locust2.0+教程:007 - 分布式压测执行
locust2.0+教程:008 - 断言
locust2.0+教程:009 - 参数化
locust2.0+教程:010 - 辅助监控工具Prometheus、Grafana、Node Exporter安装配置
locust2.0+教程:011 - Locust Test Report
locust2.0+教程:012 - 压测websocket
locust2.0+教程:013 - 使用FastHttpUser提升压力机性能
locust2.0+教程:014 - 压测XML-RPC
locust2.0+教程:015 - 压测GRPC
locust2.0+教程:小试牛刀 - 利用辅助监控工具查看性能压测资源开销
安装:
# Version: 2.24.1
pip install locust
pip install paramiko
编写脚本:ssh_locust_test.py 执行的命令即:run_command('ls -l')
from locust import User, task, between
import paramiko
import asyncio
class SSHUser(User):
wait_time = between(5, 10)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.connected = False
def connect(self):
if not self.connected:
self.client.connect('localhost', username='your_username', password='your_password')
self.connected = True
def run_command(self, command):
stdin, stdout, stderr = self.client.exec_command(command)
return stdout.read().decode()
@task
def execute_command(self):
self.connect()
result = self.run_command('ls -l')
print(result)
def on_stop(self):
self.client.close()
运行:
locust -f ssh_locust_test.py
服务启动结果:
浏览器打开前端控制界面:http://:8089
测试报告结果:图片