Pour le moment chez Binsfeld (#bibi), on sort pas mal de gros projets. Ce sont des mastodontes ! Ils sont immenses, complexes, bourrés de fonctionnalités, et ils génèrent plusieurs dizaines voire centaines de connexions par minute.
Et à chaque fois, pour ce genre de site on me pose la même question, à savoir, est-ce que le serveur pour la prod va tenir la charge ? En réalité, je n’en n’ai aucune idée. Pour répondre à cela, je me fie un peu à ce que dit la fiche technique.
Vu que je respire du code, mange du code et bois du code, je me suis attardé sur cette question ce weekend !
Donc, est-ce qu’une application WordPress basique peut tenir la charge de 100 personnes connectées simultanément ? Ou du moins, quelle est la limite en fonction de telle ou telle configuration du serveur ?
J’ai trouvé beaucoup de choses sur les optimisations de WordPress et d’Apache mais mes recherches n’ont pas été très concluantes. En effet, je m’attendais à découvrir des benchmarcks ou des graphiques de charge en fonction du nombre d’utilisateurs.
Dans mes précédentes recherches sur Docker, je me suis souvenu d’un gars qui simulait des connexions sur un site afin de tester un load-balancer en configuration « blue-green » avec Istio. Et je me suis dit que j’allais faire pareil, c’est-à-dire simuler 100 connexions et voir comment la machine réagit.
Je me relance dans des recherches (oui encore) pour trouver comment simuler des requêtes multiples sur un serveur et je tombe sur un programme qui s’appelle Siege et qui sert à faire des stress-tests sur serveur web. Je décide donc de faire mes premiers tests avec ce programme.
Pour tester la charge, je vais simplement faire un htop sur la machine et utiliser un monitoring type grafana afin de voir un peu comment se comporte le processeur et la mémoire. Et le plus important, je vais tester une visite basique sur le site qui se fait « assiéger » et voir si j’obtiens une bonne réponse (code HTTP 200).
Mon but après, c’est un peu de jouer avec les réglages de PHP-FPM pour optimiser la rapidité de la machine.
Maintenant que j’ai une idée sur la manière dont je vais pouvoir tester la charge sur mon serveur web, il va falloir que je prépare deux ou trois petites choses.
Je vais lancer Siege depuis un conteneur Docker au sein de mon tout nouveau Raspberry PI 4. Pourquoi ? Tout simplement parce que j’ai envie de m’éclater et qu’il faut bien se distraire pendant le confinement. En plus, je dois finir deux ou trois tutos sur Docker.
Au niveau serveur, j’ai un VPS SSD 2 de test qui se rapproche des configs assez classiques pour héberger du site web, donc je vais partir là-dessus.
Étape 1 : Installation d’un Raspberry PI 4
Étape 2 : Installer Docker sur un Raspberry PI
Étape 3 : Installer siege sur le PI
Étape 4 : Test de charge (en cours d’écriture)
22/06/2020
Yann Vangampelaere - nouslesdevs -