做国外网站的零售,上海的网吧,安卓安装wordpress,高性能网站建设指南简介#xff1a; Locust是一个用于可扩展的#xff0c;分布式的#xff0c;性能测试的#xff0c;开源的#xff0c;用Python编写框架/工具#xff0c;它非常容易使用#xff0c;也非常好学。它的主要思想就是模拟一群用户将访问你的网站。每个用户的行为由你编写的py…简介 Locust是一个用于可扩展的分布式的性能测试的开源的用Python编写框架/工具它非常容易使用也非常好学。它的主要思想就是模拟一群用户将访问你的网站。每个用户的行为由你编写的python代码定义同时可以从Web界面中实时观察到用户的行为。 Locust完全是事件驱动的因此在单台机器上能够支持几千并发用户访问。与其它许多基于事件的应用相比Locust并不使用回调而是使用gevent而gevent是基于协程的可以用同步的方式来编写异步执行的代码。每个用户实际上运行在自己的greenlet中。 特点 ①用简单python语言编写测试脚本非常简单轻便。不需要笨重的UI和臃肿的xml代码基于协同而非回调。 ②分布式的可扩展性的可模拟上百万用户。Locust支持多机器的性能测试每台机器可以模拟上千用户当然这可以控制的 ③Locust有一个整洁的HTMLJS的用户界面实时显示相关测试细节。由于用户界面是基于网络的它是跨平台的和容易扩展。 ④可以测试任何系统尽管Locust是基于网站的但它几乎可以测试任何系统只要你写一个客户端。 安装 Locust可以通过pip或者easy_install安装: pip install locustio 或者 easy_install locustio 安装完Locust后shell命令locust就可以使用了可以查看locust命令有哪些选项 注意要确保你安装好了python版本必须是2.6以上的但不能是3.0版以上的3.0以上的改动好大还没法兼容 locust --help 如果打算以分布式模式运行Locust建议同时安装pyzmq一种通信队列 pip install pyzmq 或者 easy_install pyzmq 在windows上安装 下载二进制安装包然后按照提示安装 网址http://www.lfd.uci.edu/~gohlke/pythonlibs/ 需要注意的是当需要大规模的测试时安装在Linux上的性能比windows上的好。 在苹果电脑上安装 ①先安装Homebrew ②安装libevent brew install libevent ③参照在linux上的安装过程。 增加打开文件限制的最大数量 在每一个HTTP连接的机器上打开一个新文件技术文件描述符。操作系统可以设置一个可以打开的文件的最大数量的下限。如果限制小于模拟用户的数量在测试时会发生故障。增加操作系统的默认最大数量的文件限制到一个数字高于模拟用户数的数量才能达到你想要的测试具体操作参考本机的操作系统。 快速启动 下面是一个简单的列子保持为python文件文件名随意 from locust import HttpLocust, TaskSet def login(l): l.client.post(/login, {username:ellen_key, password:education}) def index(l): l.client.get(/) def profile(l): l.client.get(/profile) class UserBehavior(TaskSet): tasks {index:2, profile:1} def on_start(self): login(self) class WebsiteUser(HttpLocust): task_set UserBehavior min_wait5000 max_wait9000 这个几行短短的代码就是一个完成的测试脚本。定义了两个类一个User Behavior类继承了TaskSet类用于定义测试任务的给属性tasks增加了两个任务index函数和profile函数这些人物被执行然后返回执行时间正常情况下是在下面的最小时间和最大时间之间从on_start 开始就像java的main函数一样是任务开口然后随机的挑选任务通过client相当于一个Httpsession的方法执行http请求但是会按照设置的比率来执行。Tasks属性把上面定义的函数变成任务它是一个dict类型。相当于java的map类型。 一个WebsiteUser类继承了HttpLocust类这个类用于代表用户生成一个实例为每个每个模拟用户发送http请求和设置测试参数Task_set属性它是唯一必须要有的它指向Task Set类定义用户的行为请求等待最小时间min_wait和请求等待最大时间max_wait属性单位是毫秒。weight属性指定用户的执行的比率host属性是测试的应用的网址。 注意最大时间和最小时间属性可以在locust类中定义也可以在task set类中定义完全是一样的 下面是一种更简单的定义task的方法用task 构造器。下面的代码和上面的效果是一样的但这是顺序执行任务的第一种是随机挑选任务 from locust import HttpLocust, TaskSet, task class UserBehavior(TaskSet): def on_start(self): on_start is called when a Locust start before any task is scheduled self.login() def login(self): self.client.post(/login, {username:ellen_key, password:education}) task(2) def index(self): self.client.get(/) task(1) def profile(self): self.client.get(/profile) class WebsiteUser(HttpLocust): task_set UserBehavior min_wait5000 max_wait9000 TaskSet还可以嵌套参考下面的代码 第一种 class ForumPage(TaskSet): task(20) def read_thread(self): pass task(1) def new_thread(self): pass task(5) def stop(self): self.interrupt() class UserBehaviour(TaskSet): tasks {ForumPage:10} task def index(self): pass 第一种需要注意的是interrupt这个函数如果没有这个函数locust就会一直执行formpage这个任务只有通过这个函数才能跳出来。执行formpage之外的函数。 第二种 class MyTaskSet(TaskSet): task class SubTaskSet(TaskSet): task def my_task(self): pass 运行Locust locust -f ../locust_files/上面的文件名.py --hosthttp://example.com 代码存放地址 主机的名字和应用 分布式多处理器的Locust运行 主处理器负责分发任务的 locust -f ../locust_files/上面的文件名.py --master --hosthttp://example.com --master-port8888(默认的是8080端口) 从处理器负责执行代码脚本的 llocust -f ../locust_files/上面的文件名.py --slave --master-host192.168.0.100 --hosthttp://example.com --master-bind-host8888 打开Locust web 界面 http://127.0.0.1:8089 由于example是在本地的所以ip也是本地的 需要输入模拟多少个用户数和每秒启动多少个用户就是并发数。 转载于:https://www.cnblogs.com/tiechui2015/p/10557417.html