Après avoir fait des tests de performances (benchmark) sur le serveur, c’est au tour du serveur web d’être mis à l’épreuve.
Pour rappel, le serveur web qui permet d’afficher le blog est composé de :
- Nginx : moteur web,
- Php-fpm : moteur PHP,
- MariaDB : Moteur de la base de donnée,
- Varnish : moteur du proxy cache.
Dans l’article, le moteur de base de données MariaDB ne sera pas traité. Cependant, il a été vue sur le blog un outil pour faire des tests de performances : sysbench.
wrk : outil pour tester la performance d’un serveur web
wrk est outil open-source sous licence Apache 2.0, qui permet de tester la performance d’un serveur web. wrk est disponible sur gitub.
Pendant le test, wrk va mesurer la latence et le nombre de requête par seconde.
La latence mesurée se réfère à l’intervalle de temps entre le moment où la demande a été faite (par WRK) et le moment où la réponse a été reçue à partir du service).
Installer wrk sur son serveur GNU/Linux
L’installation de wrk est très simple, pour ce faire suivre les consignes :
Debian/Ubuntu
sudo apt-get install build-essential libssl-dev git cd /opt git clone https://github.com/wg/wrk.git cd wrk make sudo cp wrk /usr/local/bin
CentOS/RedHat/Fedora
sudo yum groupinstall 'Development Tools' sudo yum install openssl-devel sudo yum install git cd /opt git clone https://github.com/wg/wrk.git cd wrk make # déplacer l'exécutable dans votre PATH sudo cp wrk /in/your/PATH
Faire des benchmark avec wrk
Exemple basique :
wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
Ce test va mesurer les performances pendant 30 secondes, utiliser 12 threads Tet 400 connections ouvertes.
Maintenant, je vais faire un test de performance sur les 3 briques, que composent mon serveur web.
- Nginx :
root@memolinux:/opt/wrk# wrk -t12 -c400 -d30s https://memo-linux.com:8080/readme.html Running 30s test @ https://memo-linux.com:8080/readme.html 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 66.75ms 156.81ms 1.22s 89.72% Req/Sec 4.50k 2.34k 21.32k 76.33% 1554372 requests in 30.02s, 14.27GB read Requests/sec: 51776.48 Transfer/sec: 486.62MB
- Php-fpm :
root@memolinux:/opt/wrk# wrk -t12 -c400 -d30s https://memo-linux.com:8080/ Running 30s test @ https://memo-linux.com:8080/ 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.57s 275.10ms 1.99s 84.42% Req/Sec 12.91 11.73 90.00 83.99% 2582 requests in 30.05s, 1.79MB read Socket errors: connect 0, read 0, write 0, timeout 804 Non-2xx or 3xx responses: 7 Requests/sec: 85.94 Transfer/sec: 60.93KB
- Varnish :
root@memolinux:/opt/wrk# wrk -t12 -c400 -d30s https://memo-linux.com/ Running 30s test @ https://memo-linux.com/ 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 17.49ms 30.03ms 357.02ms 86.89% Req/Sec 1.34k 402.91 3.75k 73.80% 471930 requests in 30.09s, 18.96GB read Requests/sec: 15683.86 Transfer/sec: 645.37MB