资讯专栏INFORMATION COLUMN

【压力测试】Mac下进行locust的配置和测试

channg / 2166人阅读

摘要:页面数据说明性能测试参数请求的类型,例如。当前请求失败的数量。中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。平均值,单位毫秒,所有请求的平均响应时间。单个请求的大小,单位字节。

写在前面:此文章在通过学习、实践网络资料写成,相关链接在文章结尾。
一、简介

1、locust是一种可用python编写脚本的开源压测工具(实质是由python下的一些库构成),可定义用户行为,模拟并发访问,从而观测系统的性能与瓶颈。

2、特点:
(1)完全基于python,且http请求完全基于Requests库;除了http/https协议,locust也可测试其他协议的系统,只需采用python调用对应的库进行请求描述即可;
(2)locust的并发机制摒弃了进程和线程,采用协程(gevent)机制,避免了系统级资源调度,可大幅提高单机的并发能力。

3、依赖的第三方的库:(在https://github.com/locustio/l... 中的setup.py下查看:install_requires=["gevent>=1.2.2", "flask>=0.10.1", "requests>=2.9.1", "msgpack-python>=0.4.2", "six>=1.10.0", "pyzmq>=16.0.2"])
(1)gevent是python中实现协程(微线程)的一个第三方库;
(2)flask是python的一个web开发框架;
(3)requests接口库是python下可用来做http接口测试的库;
(4)msgpack-python是一种快速紧凑二进制序列化结果,适用于类似json的数据;
(5)six:提供一些简单工具来封装python2和python3之间的差异;
(6)pyzmq:如果打算运行locust分布在多个进程/机器,最后安装此库。

二、安装(*)

1、安装locust
locust可以通过python的pip命令安装,因为我使用的是Mac,它是自带python的,但并不含pip,所以还需下载pip包。打开终端,执行以下步骤:
a、安装easy_install:
curl https://bootstrap.pypa.io/ez_... -o - | sudo python

b、安装pip:
sudo easy_install pip(若不成功可尝试sudo easy_install-3.6 pip 或者sudo easy_install-2.7 pip),执行后再输入电脑密码(不可见)再回车确认即可;

c、安装locust:
方法一:pip install locustio
方法二(推荐python3使用):从GitHub项目地址:https://github.com/locustio/l...
下载项目,在终端下来到项目路径,执行:python setup.py install

d、验证是否安装成功:locust --help

e、如果未来可能运行Locust 分布在多个进程/机器,建议安装pyzmq:pip install pyzmq

2、补充(待学习)
(1)如果使用的Mac,其实不建议用其自带的python,因为一旦将python折腾崩溃,将可能影响到系统。解决办法是安装homebrew(https://brew.sh),在终端中输入:brew install python,还可指定python的版本,需要将此版本python的环境变量设置在系统自带python的环境变量之前,且此方法安装的python中将含有pip。
(2)可使用python的包管理工具anaconda。

三、实践——一个简单的脚本与测试

1、创建load_test.py文件,内容为:

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

    @task(1)
    def baidu(self):
        self.client.get("/")

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 3000
    max_wait = 6000

2、在终端中来到load_test.py所在目录下,输入:
locust -f load_test.py --host=https://www.baidu.com
若正常运行则将看到:
[2017-11-28 17:39:47,262] appledeMacBook-Air-3.local/INFO/locust.main: Starting web monitor at :8089
[2017-11-28 17:39:47,263] appledeMacBook-Air-3.local/INFO/locust.main: Starting Locust 0.8.1*

3、打开浏览器访问:http://127.0.0.1:8089
(1)设置模拟用户数和每秒产生用户数,然后点击Start swarming 开始运行性能测试。

(2)页面数据说明——statistics:

<性能测试参数>

Type: 请求的类型,例如GET/POST。

Name:请求的路径。这里为百度首页,即:https://www.baidu.com/

request:当前请求的数量。

fails:当前请求失败的数量。

Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。

Average:平均值,单位毫秒,所有请求的平均响应时间。

Min:请求的最小服务器响应时间,单位毫秒。

Max:请求的最大服务器响应时间,单位毫秒。

Content Size:单个请求的大小,单位字节。

reqs/sec:是每秒钟请求的个数。

官方文档
本文主要参考资料
进一步学习locust请戳

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44521.html

相关文章

  • 压测工具Locust

    摘要:发现一款很赞的压力测试软件,开源的哦,用编写测试脚本,定义用户行为,可以模拟数百万用户的访问,从而观测系统的性能与瓶颈官方网站特点编写脚本,定义用户的行为分布式,可扩展安装使用简单需求安装命令参数编辑脚本执行脚本浏览器打开出现一个 发现一款很赞的压力测试软件Locust,开源的哦,用 python 编写测试脚本,定义用户行为,可以模拟数百万用户的访问,从而观测系统的性能与瓶颈! 官方网...

    Chiclaim 评论0 收藏0
  • 论性能测试

    摘要:吞吐量一般结合业务需求而定服务器资源占用占用率内存使用率命中率篇是一种预测系统行为和性能的负载测试工具。负载测试与压力测试都是性能测试。通过平台接口可进行合理的性能测试。有利于测试人员及时定位问题。 Part 1:性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 A. 类别 性能测试包括负载测试、压力测试、基准测试等。 i. 负...

    qpal 评论0 收藏0
  • 【超越白皮书3】DAG技术解析与实测

    摘要:有向无环图,以下简称是其中的代表之一。的去中心化和可扩展性可认为是一体两面的,因为基于数据结构带来的异步记账特性,同时实现了高度的参与网络节点的去中心化和交易的可扩展性。因此,目前对于双花问题,需要综合考虑实际情况进行设计。 本报告由火币区块链研究院出品,作者:袁煜明、胡智威。原文地址 相关报告: 【超越白皮书2】EOS主网上线前夕的实测分析与技术建议 【超越白皮书1】EOSIO程序实...

    caikeal 评论0 收藏0
  • Apache 与 Nginx 性能对比:Web 服务器优化技术

    摘要:服务器市场份额。子进程负责创建由指令设置的服务器线程,同时还负责监听接收到的请求,并将请求分发给处理线程。在版本引入了模块,这个模块基于模块创建的,并加入了独立的监听线程来管理请求处理完成后的休眠的连接。基于事件的服务器完胜。 译文首发于 Apache 与 Nginx 性能对比:Web 服务器优化技术,转载请注明出处。 多年前 Apache 基金会 Web 服务器 简称「Apache」...

    shadowbook 评论0 收藏0
  • Apache 与 Nginx 性能对比:Web 服务器优化技术

    摘要:服务器市场份额。子进程负责创建由指令设置的服务器线程,同时还负责监听接收到的请求,并将请求分发给处理线程。在版本引入了模块,这个模块基于模块创建的,并加入了独立的监听线程来管理请求处理完成后的休眠的连接。基于事件的服务器完胜。 译文首发于 Apache 与 Nginx 性能对比:Web 服务器优化技术,转载请注明出处。 多年前 Apache 基金会 Web 服务器 简称「Apache」...

    wangbjun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<