Traffic Generators: Difference between revisions
Line 97: | Line 97: | ||
Upload the locust test file (Click here to see how to make a locust testfile) |
Upload the locust test file (Click here to see how to make a locust testfile) |
||
Exec this command (this only starts the interface to control the tests it |
Exec this command (this only starts the interface to control the tests it doesnot actually start a test): |
||
locust -f ./ |
locust -f ./locastfile.py --host=http://somedomain.io --master |
||
You will get this: |
|||
SHOW LOCUST PICS HERE |
|||
Go to the web interface to control the test variables and to start and stop it. |
Go to the web interface to control the test variables and to start and stop it. |
||
http://localhost:8089 |
|||
Running on multiple hosts: |
|||
You will have a master slave setup where only one master exists. |
|||
Run the "running a test" steps on each node you want to have as part of the testing cluster but on each slave you should exec this instead: |
|||
locust -f ./test.py --host=http://somedomain.io --slave --master-host=x.x.x.x |
|||
Where x.x.x.x is the ip of the master you would have set up in the "running a test" section. |
|||
You will only need to use the one admin interface provided my the master. It should report whether the slaves are correctly setup and activey serving traffic. |
|||
== Distributed Mode == |
== Distributed Mode == |
Revision as of 10:48, 5 November 2018
Siege
Siege is an open source stress / regression test and benchmark utility.
siege -c100 -t30S -d10 -b -v aman.info.tm
Some Extensions
--header="Cookie: SESSb43b2d1d084de3872c89b0b125b64564=Jafuk06rppYAXIxWaU0LY2VmqxN997DsKU3BSgfArCM" -f /path/to/some-urls.txt
The some-urls.txt file is just a simple list of URLs on newlines:
http://www.mywebsite.com/about-us http://www.mywebsite.com/contact-us
Httperf
Installation:
sudo apt install httperf
Usage:
httperf --server waf.avitest.com --port 80 --num-conns 100 --rate 10 --timeout 1
Curl
curl -s -o /dev/null -w "%{http_code}" http://waf.avitest.com seq 100 | parallel -j0 curl -s -o /dev/null -w "%{http_code}" http://waf.avitest.com
for i in `seq 1 99999`; do echo "Status Code:"; curl -s -o /dev/null -w "%{http_code}" https://10.1.1.1; sleep 1; done
Apache Benchmark
ab -t 1 -n 1000 -c 300 http://waf.avitest.com/
Increase Apache MaxClients (now called MaxRequestWorkers in new versions) on Backend Server:
sudo nano /etc/apache2/mods-available/mpm_event.conf MaxRequestWorkers 1000 ServerLimit 565
Locust
Installation:
sudo apt-get update sudo apt-get -y install python-pip python-dev libxml2-dev libxslt-dev sudo pip install locustio
Install pyzmq for tests across multiple servers to increase the testing capacity:
sudo pip install pyzmq
Set file limit to unlimited to ensure there is no OS problems with files at concurrency:
ulimit -n 9999
Locust File
Single “task” which gets a specific webpage:
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
@task
def get_something(self):
self.client.get("/something")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
The test below logs a user in to groupster then requests what will be their home page 1 time for every 3 times it requests a group page:
from locust import HttpLocust, TaskSet
def login(l):
l.client.post("/login/process", {"email":"me@someemail.com", "pass":"password"})
def index(l):
l.client.get("/")
def group(l):
l.client.get("/group/1/")
class UserBehavior(TaskSet):
tasks = {index:1, group:3}
def on_start(self):
login(self)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait=5000
max_wait=9000
Executing
Upload the locust test file (Click here to see how to make a locust testfile) Exec this command (this only starts the interface to control the tests it doesnot actually start a test):
locust -f ./locastfile.py --host=http://somedomain.io --master
Go to the web interface to control the test variables and to start and stop it.
http://localhost:8089
Distributed Mode
Running locally is fine for basic testing and getting started with Locust, but most applications will not receive a significant load if you’re just running it from your local machine. It’s almost always necessary to run it in distributed mode. This is easy to do with a couple AWS nodes.
After installing Locust and moving your locustfile.py to all nodes, you can start the “master” node:
locust --host=http://localhost:5000 --master
Then start any “slave” nodes, giving them a reference to the master node:
locust --host=http://localhost:5000 --slave\ --master-host=192.168.10.100
Slowhttptest
Source: ubuntu.com
This section is under construction. |
- References
{{#widget:DISQUS
|id=networkm
|uniqid=Traffic Generators
|url=https://aman.awiki.org/wiki/Traffic_Generators
}}