locust 压力测试数据的插入能力

导语

关于 locust https://locust.io 大家可以访问 进行了解,本次分享主要是分享如何使用locust 做数据库的压力测试

压力测试Mysql的插入能力

	import os
	
	import pymysql
	from locust import HttpUser, between, task
	
	
	class MyUser(HttpUser):
	    wait_time = between(1, 2)
	
	    def __init__(self, *args, **kwargs):
	        super().__init__(*args, **kwargs)
	        # 初始化数据库连接
	        self.db_conn = pymysql.connect(
	            host=self.get_config("DB_HOST", "localhost"),
	            port=int(self.get_config("DB_PORT", 3306)),
	            user=self.get_config("DB_USER", "username"),
	            password=self.get_config("DB_PASSWORD", "password"),
	            database="your_database",
	            charset="utf8mb4",
	            cursorclass=pymysql.cursors.DictCursor
	        )
	
	    def on_start(self):
	        # 在用户生命周期内执行插入测试的逻辑
	        self.insert_data()
	
	    def on_stop(self):
	        # 在用户生命周期结束时关闭数据库连接
	        if self.db_conn:
	            self.db_conn.close()
	
	    def get_config(self, key, default):
	        return os.getenv(key, default)
	
	    def insert_data(self):
	        # 执行数据库插入测试逻辑
	        with self.db_conn.cursor() as cursor:
	            # 插入数据的 SQL 语句
	            sql = "INSERT INTO `DataXplorer`.`data_xplorer_user`( `username`, `email`, `password`) VALUES (%s, %s, %s)"
	            # 插入的数据
	            data = ("value1", "value2", "value3")
	            # 执行插入操作
	            cursor.execute(sql, data)
	        # 提交事务
	        self.db_conn.commit()
	
	    @task
	    def perform_insert_task(self):
	        with self.client.request("POST", "/your-api-endpoint", catch_response=True) as response:
	            try:
	                # 执行插入测试任务
	                self.insert_data()
	                response.success()
	            except Exception as e:
	                response.failure(f"Failed to insert data: {e}")
	                

测试步骤

  • 启动脚本

    locust -f Myuser.py --web-host=localhost --web-port=8089

  • 访问地址

    http://localhost:8089

  • 参数填写
    在这里插入图片描述
    填写完每次的用户数和间隔时间,点击start

参数介绍

报告页面

在这里插入图片描述
在这里插入图片描述

参数详解

Request Statistics

  1. Requests/s (Reqs/s):
    • 表示每秒钟完成的请求数量。
    • 高值表示系统的处理能力较强。
  2. Failures/s (Fails/s):
    • 表示每秒钟的失败请求数量。
    • 高值可能表示系统存在问题或者负载测试中的一些失败。
  3. Median Response Time:
    • 中位数响应时间,即一半的请求在这个时间内完成。
    • 衡量了系统的整体性能。
  4. Average Response Time:
    • 平均响应时间,所有请求的响应时间的平均值。
    • 提供了系统的整体性能水平。
  5. Min Response Time:
    • 所有请求中的最小响应时间。
    • 表示最快的请求完成时间。
  6. Max Response Time:
    • 所有请求中的最大响应时间。
    • 表示最慢的请求完成时间。

Response Time Statistics

  1. 50%:
    • 50%的请求在这个时间内完成,即中位数。
  2. 66%:
    • 66%的请求在这个时间内完成。
  3. 75%:
    • 75%的请求在这个时间内完成。
  4. 80%:
    • 80%的请求在这个时间内完成。
  5. 90%:
    • 90%的请求在这个时间内完成。
  6. 95%:
    • 95%的请求在这个时间内完成。
  7. 98%:
    • 98%的请求在这个时间内完成。
  8. 99%:
    • 99%的请求在这个时间内完成。
  9. 99.9%:
    • 99.9%的请求在这个时间内完成。

这些统计数据可以帮助你了解系统的性能、稳定性和可靠性。例如,通过观察响应时间的百分比分布,你可以得知在多大程度上系统能够满足不同用户的需求。更低的百分比(如50%或75%)表示大多数用户的体验,而更高的百分比(如99%或99.9%)表示一些极端情况下的性能表现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小杨同学~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值