首页 > 编程语言 >locust+python高并发压测总结

locust+python高并发压测总结

时间:2024-09-23 13:34:22浏览次数:9  
标签:脚本 task python locust 响应速度 压测 -- 优化

locust+python全链路压测总结

1. 什么是接口?

为系统提供数据服务的叫做接口(Interface)

locust安装

pip install locust

安装完成后:locust -h查看是否安装成功

2. 如何编写locust脚本?

编写locust脚本主要分为以下几个步骤:

  1. 导入Locust类
  2. 定义用户行为
  3. 定义任务
  4. 运行脚本

2.1 导入Locust类

from locust import HttpUser, task, between

2.2 定义用户行为

class MyUser(HttpUser):
    wait_time = between(1, 2)

    @task
    def my_task(self):
        self.client.get("/api/users")

2.3 定义任务

class MyUser(HttpUser):
    wait_time = between(1, 2)

    @task
    def my_task(self):
        self.client.get("/api/users")

2.4 运行脚本

from locust import HttpUser, task, between

class MyUser(HttpUser):
    wait_time = between(1, 2)

    @task
    def my_task(self):
        self.client.get("/api/users")

# 运行脚本:locust -f my_locust_script.py --host=http://example.com

3. 如何运行locust脚本?

运行locust脚本有两种方式:

  1. 命令行运行:locust -f my_locust_script.py --host=http://example.com
  2. 代码运行:
from locust import runners

def main():                 
        # 运行脚本              
        runners.locust_runner.run_locust_file("my_locust_script.py", host="http://example.com")

if __name__ == "__main__":
        main()

4. 如何分析locust脚本的性能?

locust提供了一些性能分析工具,包括:

  1. 统计信息:locust -f my_locust_script.py --host=http://example.com --stats-csv=stats.csv
  2. 分析统计信息:locust -f my_locust_script.py --host=http://example.com --csv=stats.csv --no-web --only-summary
  3. 分析统计信息:locust -f my_locust_script.py --host=http://example.com --csv=stats.csv --no-web --only-summary --show-task-ratio
  4. 分析统计信息:locust -f my_locust_script.py --host=http://example.com --csv=stats.csv --no-web --only-summary --show-task-ratio --show-percentile-stats

5. 如何优化locust脚本?

  1. 优化用户行为:
    1. 减少并发用户数:通过设置并发用户数,可以控制脚本的并发用户数,减少脚本的压力。
    2. 优化请求:优化请求,可以提升脚本的吞吐量。
    3. 优化请求参数:优化请求参数,可以提升脚本的响应速度。
    4. 优化请求方式:优化请求方式,可以提升脚本的响应速度。
    5. 优化请求头:优化请求头,可以提升脚本的响应速度。
    6. 优化断言:优化断言,可以提升脚本的响应速度。
    7. 优化代码:优化代码,可以提升脚本的响应速度。
  2. 优化脚本:
    1. 优化代码结构:优化代码结构,可以提升脚本的响应速度。
    2. 优化代码逻辑:优化代码逻辑,可以提升脚本的响应速度。
    3. 优化代码性能:优化代码性能,可以提升脚本的响应速度。
    4. 优化代码配置:优化代码配置,可以提升脚本的响应速度。
    5. 优化代码环境:优化代码环境,可以提升脚本的响应速度。
    6. 优化代码部署:优化代码部署,可以提升脚本的响应速度。
  3. 优化服务器:
    1. 优化服务器硬件:优化服务器硬件,可以提升脚本的响应速度。
    2. 优化服务器软件:优化服务器软件,可以提升脚本的响应速度。
    3. 优化服务器网络:优化服务器网络,可以提升脚本的响应速度。
    4. 优化服务器负载:优化服务器负载,可以提升脚本的响应速度。
    5. 优化服务器配置:优化服务器配置,可以提升脚本的响应速度。

下面是部分优化代码:

 @task(weight_t1)
    def test_register_login(self):
        # 注册用户(web)
        uri = "/usercenter/v1/web/register/account"
        username = "web" + random_data_time_string(rule="time_ms", return_str=True)
        req_body = {
            "user_name": username,
            "coin_code": coin_code,
            "password": default_pwd,
            "application_id": application_id,
            "use_type": 1,
            "app": "web",
            "invite_code": invite_code
        }
        with self.client.post(path=uri, headers=default_headers, json=req_body, catch_response=True) as responses:
            if responses.status_code == 200 and responses.json().get("code") == 0:
                responses.success()
            else:
                responses.failure("注册失败")

标签:脚本,task,python,locust,响应速度,压测,--,优化
From: https://www.cnblogs.com/king8/p/18426906

相关文章

  • D15【python接口自动化学习】-python基础之内置数据类型
    day15字典的常见操作(上)学习日期:20240922学习目标:内置数据类型--24常见常新:字典的常见操作(上)学习笔记:字典的内置函数访问字典的内容#访问字典的所有元素mail_list={'tom':'[email protected]','jerry':'[email protected]','john':'[email protected]'}print(mail_li......
  • Python NumPy处理数组的基本用法代码示例
    NumPy是一个用于处理数组(向量和矩阵)以及进行数值运算的Python库。下面是一些简单的例子来展示如何使用NumP:示例1:创建数组importnumpyasnpa=np.array([1,2,3])#创建一个一维数组b=np.array([[1,2,3],[4,5,6]])#创建一个二维数组print(a)print(b)示......
  • python面试题
    python是什么?Python是一种开放原始码、直译式、可携式、面向对象的程序语言,具有模块、多线程、异常处理以及自动内存管理功能。广泛应用包括Web开发(如Django和Flask框架)、数据科学(如Pandas和NumPy库)、机器学习(如TensorFlow和PyTorch框架)、自动化脚本、科学计算等。算法是什么?......
  • Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码
    分析师:SikunChen在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估情报学期刊的质量和影响力对于学术研究和信息传播意义重大。本研究旨在通过多种方法对......
  • 邮件发送基础:深入SMTP协议、配置邮件服务器及Python实现
    目录引言SMTP协议基础定义与功能工作原理特性与优势邮件服务器配置第三方邮件服务商配置自建邮件服务器配置使用Python发送邮件安装smtplib和email模块发送简单纯文本邮件发送HTML格式邮件发送带附件的邮件完整示例:发送带附件的HTML邮件注意事项总结引言......
  • Python 类型提示全解析:从入门到精通的必备技巧(如何让Python代码更清晰、错误更少)
    文章目录......
  • python语言MIDI钢琴简谱播放器软件代码QZQ
    importtkinterastkimportpygame.midiimporttime初始化pygame.midipygame.midi.init()获取MIDI输出设备midi_out=pygame.midi.Output(0)乐器名称映射instrument_names={0:“大钢琴(声学钢琴)”,1:“明亮的钢琴”,2:“电钢琴”,3:“酒吧钢琴”,4......
  • python ssh arthas
    #!/bin/bashARTHAS_FILE="arthas-boot.jar"#检查arthas-boot.jar文件是否存在if[!-f"$ARTHAS_FILE"];thenecho"错误:未找到arthas-boot.jar文件,请确保该文件在当前目录中。"exit1fi#获取当前正在运行的Java进程echo"检测正在运行的Java进程......
  • clickhouse压测
    Clickhouse压测压测工具:jemter服务器监控脚本sql准备:简单sqlselect*fromtb_plan_studentwhereplan_id=1122980766105344andregion_id=330302limit10简单sql---部分字段selectstudent_id,student_namefromtb_plan_studentwhereplan_id=112298076......
  • [Python手撕]二叉树最大宽度
    #Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defwidthOfBinaryTree(self,root:Optional[......