Introduction
Les tests de charge constituent une étape cruciale dans le cycle de développement et de déploiement d’un site WordPress. L’objectif principal est d’identifier le meilleur compromis en termes de ressources serveur selon les spécificités du projet web. Une infrastructure surdimensionnée entraîne des coûts inutiles, tandis qu’une infrastructure sous-dimensionnée risque de compromettre l’expérience utilisateur lors des pics de trafic. En simulant des centaines, voire des milliers de connexions simultanées, nous pouvons déterminer précisément les limites de notre configuration et l’optimiser en conséquence avant la mise en production.
Environnement de test avec Proxmox et TurnKey WordPress
Une approche efficace pour mettre en place un environnement de test consiste à utiliser Proxmox VE avec un container LXC basé sur le template TurnKey WordPress.
TurnKey Linux : des solutions prêtes à l’emploi
Les templates TurnKey sont des images préconfigurées basées sur Debian qui fournissent des applications prêtes à l’emploi. Ces templates offrent :
- Une installation complète et optimisée de l’application (dans ce cas, WordPress)
- Une configuration sécurisée par défaut
- Des outils d’administration intégrés
- Une maintenance simplifiée via des mises à jour automatiques
Le template TurnKey WordPress inclut non seulement WordPress mais aussi le serveur web, PHP, MySQL et toutes les dépendances nécessaires correctement configurées.

Déploiement rapide avec Proxmox
Pour créer un environnement de test WordPress :
- Dans l’interface Proxmox, créez un nouveau container LXC
- Sélectionnez le template TurnKey WordPress dans la liste des templates disponibles
- Configurez les ressources (CPU, RAM, stockage) selon vos besoins de test
- Définissez les paramètres réseau et démarrez le container
- Accédez à l’interface d’administration pour finaliser la configuration
Cette approche permet de déployer rapidement plusieurs instances WordPress isolées avec différentes configurations de ressources, idéal pour comparer les performances sous charge.
Locust : un outil puissant pour les tests de charge
Locust est un outil open-source écrit en Python qui permet de simuler facilement des utilisateurs virtuels visitant un site web. Sa simplicité d’utilisation et sa flexibilité en font un excellent choix pour tester les performances d’une installation WordPress.
Installation et configuration
Pour mettre en place un test de charge avec Locust :
- Installez Locust : Sur les systèmes Debian/Ubuntu :
sudo apt install python3-locust
Ou via pip si vous préférez cette méthode :pip install locust
- Créez un fichier de script nommé
locustfile.py
dans un dossier dédié à vos tests :
from locust import HttpUser, task, between
import logging
# Désactiver les avertissements SSL
import urllib3
urllib3.disable_warnings()
class WordPressUser(HttpUser):
wait_time = between(1, 3) # Temps d'attente entre les requêtes
# Désactiver la vérification SSL pour les environnements de test
connection_timeout = 30.0
network_timeout = 30.0
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.client.verify = False # Ignorer la vérification des certificats SSL
@task(5)
def page_index(self):
# Simuler un accès à la page d'accueil
with self.client.get("/", catch_response=True) as response:
if response.status_code != 200:
logging.error(f"Échec d'accès à la page d'accueil: {response.status_code}")
response.failure("Échec d'accès à la page d'accueil")
@task(3)
def page_articles(self):
# Simuler un accès aux articles/posts
with self.client.get("/index.php/category/non-classe/", catch_response=True) as response:
if response.status_code != 200:
response.failure("Échec d'accès à la page des articles")
@task(2)
def page_about(self):
# Simuler un accès à la page À propos
with self.client.get("/index.php/about/", catch_response=True) as response:
if response.status_code != 200:
response.failure("Échec d'accès à la page À propos")
@task(1)
def recherche(self):
# Simuler une recherche sur le site
with self.client.get("/index.php?s=test", catch_response=True) as response:
if response.status_code != 200:
response.failure("Échec d'accès à la recherche")
@task(1)
def wp_admin(self):
# Tenter d'accéder à l'interface d'administration
with self.client.get("/wp-admin/", catch_response=True) as response:
# Code 302 est acceptable car redirection vers la page de login
if response.status_code not in [200, 302]:
response.failure("Échec d'accès à wp-admin")
- Exécutez Locust depuis le répertoire contenant votre fichier :
locust
- Accédez à l’interface web de Locust à l’adresse http://localhost:8089 et configurez votre test :
- Host : L’URL de votre site WordPress (ex : http://192.168.0.21)
- Number of users : Le nombre d’utilisateurs à simuler
- Spawn rate : Le taux d’augmentation des utilisateurs par seconde

Métriques clés à surveiller
Lors de l’exécution des tests de charge sur votre infrastructure WordPress, plusieurs métriques sont particulièrement pertinentes :
RPS (Requests Per Second)
Le RPS est l’indicateur principal de performance, représentant le nombre de requêtes que votre site peut traiter chaque seconde. Cette métrique est essentielle pour évaluer la capacité de votre infrastructure :
- Un RPS stable indique une bonne gestion de la charge
- Une chute du RPS lorsque le nombre d’utilisateurs augmente signale que votre infrastructure atteint ses limites
- Pour un site WordPress standard, un RPS de quelques dizaines à quelques centaines peut être considéré comme acceptable, selon la complexité du site

Temps de réponse
Le temps de réponse moyen, médian et percentile (généralement P95 ou P99) vous indique la rapidité avec laquelle votre serveur répond aux requêtes. Un temps de réponse qui augmente sensiblement avec la charge indique des problèmes potentiels.
Taux d’erreur
Le pourcentage de requêtes ayant échoué est crucial pour identifier les points de défaillance. Un taux d’erreur élevé pendant un test de charge peut révéler des problèmes de configuration du serveur, des timeouts de base de données ou des limitations de ressources.

Optimisation de l’infrastructure WordPress
Suite aux tests de charge, plusieurs optimisations peuvent être envisagées selon les résultats obtenus :
- Mise en cache : Implémentez une solution de cache comme WP Super Cache, W3 Total Cache ou Redis
- CDN : Déchargez les assets statiques (images, CSS, JS) vers un CDN
- Configuration serveur : Ajustez les paramètres PHP (memory_limit, max_execution_time) et du serveur web
- Base de données : Optimisez les requêtes SQL et envisagez la mise en cache des requêtes
- Ressources serveur : Augmentez la RAM, le CPU ou migrez vers un serveur plus puissant si nécessaire
Conclusion
Les tests de charge avec Locust vous permettent d’identifier précisément les limites de votre infrastructure WordPress et d’anticiper les problèmes potentiels avant qu’ils n’affectent les utilisateurs réels.
En comprenant comment votre site se comporte sous différents niveaux de trafic, vous pouvez prendre des décisions éclairées concernant les ressources serveur nécessaires et les optimisations à mettre en place.
Cette approche proactive garantit non seulement une meilleure expérience utilisateur, mais permet également d’éviter les coûts inutiles liés à un surdimensionnement de l’infrastructure. Pour tout projet WordPress d’envergure, les tests de charge devraient faire partie intégrante du processus de développement et de déploiement.