Page MenuHomePhabricator

Evaluate Locust Stress Test Tool
Closed, ResolvedPublic

Description

Locust (see: https://locust.io) is a distributed load/stress testing system. The system itself and the test specification are programmed in Python and can then be run on N hosts (a swarm) that all query a central server for work assignments.

We want to be able to generate a generate a arbitrary number of HTTP/S requests per second spread out over a certain number of IPv4/IPv6 addresses.

For certain use cases such as past attack simulation it would be interesting to be able to host the system at AWS generating about 100,000 requests per second coming from about 1000 distinct IP addresses.

Related Objects

StatusSubtypeAssignedTask
Resolved wkandek

Event Timeline

Documentation: https://wikitech.wikimedia.org/wiki/LocustProofOfConcept

Code: https://github.com/wkandek/locust

Locust was first setup locally under Virtualbox VMs and functionally tested. Vagrant was used to generate the VMs and puppet was used for the software installation and configuration. Puppet is also used to propagate changes in the test specification file.
Vagrant was also used in the port to AWS and functional testing works well. But it is cumbersome to generate 100s of VMs with Vagrant as API throttling seems to kick in it. It is easier and far faster to clone of on the Locust worker machines and use the AWS API to
generate additional workers. That way 1000 machines be brought up in under 1 hour. The cost of such a test is fairly low: under 10 USD/hour.

wkandek moved this task from Incoming 🐫 to Doing 😎 on the serviceops board.