Created
July 14, 2019 11:07
-
-
Save maorkavod/9bb9626d8b71e969bb063bdb5f3f245e to your computer and use it in GitHub Desktop.
How to quickly stress test a web server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -s "http://google.com?[1-1000]" | |
This will make 1000 calls to google i.e. | |
http://google.com?1 | |
http://google.com?2 | |
http://google.com?3 | |
\... | |
http://google.com?1000 | |
So say you want to stress test your web application and it won't complain if it's fed an extra parameter, 10,000 calls could be done something like. | |
curl -s "http://yourappp.com/your_page_to_test.php?[1-10000]" | |
Multiple Pages | |
Easy just add each page to the command line. | |
curl -s "http://yourapp.com/page1.php?[1-1000]" "http://yourappp.com/page2.php?[1-1000]" | |
Or even... | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" | |
Timing | |
Using the time command we can get a view on our performance | |
time curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" | |
real 0m0.606s | |
user 0m0.009s | |
sys 0m0.008s | |
Simulating consecutive users | |
OK, this is great for sending a whole bunch of calls one after the other but what about simultaneous calls. For this we can place the Curl calls in a script and set them running in the background. i.e. my_stress_test.sh | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
curl -s "http://yourapp.com/page{1, 2}.php?[1-1000]" & | |
pidlist="$pidlist $!" | |
for job in $pidlist do | |
echo $job | |
wait $job || let "FAIL+=1" | |
done | |
if [ "$FAIL" == "0" ]; then | |
echo "YAY!" | |
else | |
echo "FAIL! ($FAIL)" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment