Locust:一个分布式负载测试工具

最新版本0.7.2文档:http://docs.locust.io/en/latest/quickstart.html

Locust简介

Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。

Locust特性

  • 使用Python编写模拟用户行为的代码,无需繁琐的配置
  • 分布式可扩展,能够支持上百万用户
  • 自带Web界面
  • 不仅能测试web系统,也可以测试其它系统

Locust思想

在测试过程中,一群用户将访问你的网站。每个用户的行为由你编写的Python代码定义,同时可以从Web界面中实时观察到用户的行为。

Locust完全是事件驱动的,因此在单台机器上能够支持几千并发用户访问。与其它许多基于事件的应用相比,Locust并不使用回调,而是使用gevent,而gevent是基于协程的,可以用同步的方式来编写异步执行的代码。每个用户实际上运行在自己的greenlet中。

 

Locust安装

Locust可以通过pip或者easy_install安装:

pip install locustio
或者
easy_install locustio

安装完Locust后,shell命令locust就可以使用了,可以查看locust命令有哪些选项:

locust --help

如果打算以分布式模式运行Locust,建议同时安装pyzmq:

pip install pyzmq
或者
easy_install pyzmq

Locust初步使用

locustfile.py例子

下面是一个简单的locustfile.py文件。

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_wait=5000
    <