• Locust性能测试_百度案例


    一、安装:

                    1、Locust在PyPI上可用,可以通过pip或easy_install安装:pip install locustio
                    2、查看Locust可用选项:locust --help
                    3、在Windows上安装蝗虫在Windows上,运行pip安装locustio应该可以工作。但是,如果没有,很有可能可以通过首先为pyzmq、gevent和greenlet安装预构建的二进制包来修复它。下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/,当你下载了.whl文件后,你 可以通过以下命令安装:pip install name-of-file.whl
                    补充知识点:增加打开文件的最大数量限制机器上的每个HTTP连接都打开一个新文件(技术上是一个文件描述符)。操作系统可以为可打开的文件的最大数量设置一个低限制。如果限制小于测试中模拟用户的数量,就会发生故障。将操作系统的默认最大文件数量限制增加到 比您希望运行的模拟用户数量更高的数量。如何做到这一点取决于正在使用的操作系统。
                    注意:在Windows上运行蝗虫应该可以很好地开发和测试负载测试脚本。但是,在运行大规模测试时,建议您在Linux机器上这样做,因为gevent在Windows下的性能很差。

    二、大家最关心的是如何使用locust去实战,这一节先说一下基础入门的,下面的代码是完成一个百度的请求性能测试

    # -*- coding: utf_8 -*-
    # locust性能测试
    
    from locust import HttpLocust, TaskSet, task
    import subprocess
    import json
    
    # 性能测试任务类 TaskSet.
    class UserBehavior(TaskSet):
        # 开始
        def on_start(self):
            pass
    
        # 任务
        @task(10)
        def getTagVals(self):
            u"""
            request_url:请求路径
            request_params:请求头参数
            request_json:请求json参数
            """
            request_url = "https://www.baidu.com/" # (待测试的路径)
    
            response = self.client.get(
                url=request_url,
            )
            if response.status_code != 200:
                print(u"返回异常")
                print(u"请求返回状态码:", response.status_code)
            elif response.status_code == 200:
                print(u"返回正常")
    
            # 这里可以编写自己需要校验的返回内容
            # content = json.loads(response.content)["content"]
            # if content["tagKey"] == 25:
            #     print u"校验成功"
            #     print json.dumps(content, encoding="UTF-8", ensure_ascii=False)
    
    
    # 性能测试配置
    class MobileUserLocust(HttpLocust):
        u"""
        min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
        max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
        """
        # weight = 3
        task_set = UserBehavior
        host = "https://www.baidu.com/"  # (待测试的ip或者域名)
        min_wait = 3000
        max_wait = 6000
    
    
    if __name__ == "__main__":
        subprocess.Popen("locust -f main_pt.py", shell=True)

     RPS是 每秒用户数、FAILUSERS是 失败率

  • 相关阅读:
    Android零碎知识之Style and Theme
    Java 线程池(一):开篇及Executor整体框架介绍
    ADB命令笔记本
    volatile变量理解 via《Java并发编程实战》
    Java NIO
    乱七八糟(一)
    Android事件分发机制
    AndroidStudio下的依赖管理
    shell--填过的坑
    兼容类问题
  • 原文地址:https://www.cnblogs.com/lixy-88428977/p/9367190.html
Copyright © 2020-2023  润新知