« Memcached » : différence entre les versions
Aucun résumé des modifications |
|||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 84 : | Ligne 84 : | ||
<syntaxhighlight lang="bash">sudo apt update | <syntaxhighlight lang="bash">sudo apt update | ||
sudo apt install php-pear php8.3-dev libmemcached-dev build-essential | sudo apt install php-pear php8.3-dev libmemcached-dev build-essential zlib1g-dev | ||
sudo pecl install memcached</syntaxhighlight> | sudo pecl install memcached</syntaxhighlight> | ||
Pendant l’installation, PECL peut demander des options (compression, SASL). Tu peux laisser les valeurs par défaut si tu n’as pas besoin d’authentification. | Pendant l’installation, PECL peut demander des options (compression, SASL). Tu peux laisser les valeurs par défaut si tu n’as pas besoin d’authentification. | ||
| Ligne 108 : | Ligne 108 : | ||
Dans <code>LocalSettings.php</code>, utilise l’implémentation PECL : | Dans <code>LocalSettings.php</code>, utilise l’implémentation PECL : | ||
<syntaxhighlight lang="php">$wgMainCacheType | <syntaxhighlight lang="php"> | ||
$wgParserCacheType | $wgMainCacheType = CACHE_MEMCACHED; | ||
$wgMessageCacheType = | $wgParserCacheType = CACHE_MEMCACHED; | ||
$wgSessionCacheType = | $wgMessageCacheType = CACHE_MEMCACHED; | ||
$wgSessionCacheType = CACHE_MEMCACHED; | |||
$wgMemCachedServers = [ '127.0.0.1:11211' ];</syntaxhighlight> | $wgMemCachedServers = [ '127.0.0.1:11211' ];</syntaxhighlight> | ||
<blockquote>'''Pourquoi ?'''<br /> | <blockquote>'''Pourquoi ?'''<br /> | ||
Dernière version du 13 décembre 2025 à 16:52
Memcached est un système de cache en mémoire rapide et léger utilisé pour stocker temporairement des données (objets, résultats de requêtes, sessions) afin d’accélérer les applications web. Il fonctionne en RAM, est multi-thread, et permet à plusieurs processus ou serveurs d’accéder à un cache partagé.
Sur Debian, le paquet memcached installe le démon serveur, la configuration système, et des outils pour gérer le cache, tandis que l’extension PHP (php-memcached) permet aux applications PHP (comme MediaWiki) de l’utiliser facilement.
Installer et activer Memcached sur Debian/Ubuntu avec PHP 8.3-FPM pour MediaWiki.
1️⃣ Installer Memcached côté serveur
sudo apt update
sudo apt install memcached libmemcached-tools
Vérifier que le service est actif :
systemctl status memcached
Tu dois voir :
Active: active (running)
Pour démarrer/activer au boot :
sudo systemctl enable --now memcached
2️⃣ Installer l’extension PHP Memcached pour PHP 8.3
sudo apt install php8.3-memcached
Redémarre PHP-FPM pour que l’extension soit prise en compte :
sudo systemctl restart php8.3-fpm
Vérifie l’extension :
php -m | grep memcached
Tu dois obtenir :
memcached
Ou avec une page phpinfo() côté web, tu dois voir memcached support: enabled.
3️⃣ Configurer MediaWiki pour utiliser Memcached
Dans LocalSettings.php, remplace tes caches existants :
$wgMainCacheType = CACHE_MEMCACHED;
$wgParserCacheType = CACHE_MEMCACHED;
$wgMessageCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = [ '127.0.0.1:11211' ];
$wgUseFileCache = false; // inutile avec Memcached
4️⃣ Vérifier que Memcached fonctionne avec MediaWiki
- Crée une nouvelle page test
- Vérifie qu’elle est visible dans les catégories immédiatement après création
- Optionnel : purger les jobs pour être sûr que le parser cache est à jour :
php maintenance/runJobs.php --maxjobs=5000
5️⃣ Bonus : améliorer stabilité avec OPcache et APCu
Tu peux garder OPcache et APCu pour PHP, mais MediaWiki utilisera Memcached pour tout le cache partagé. Exemple :
$wgMainCacheType = CACHE_MEMCACHED; // partagé
$wgParserCacheType = CACHE_MEMCACHED; // partagé
$wgMessageCacheType = CACHE_MEMCACHED; // partagé
// côté PHP
; opcache.enable=1
; apcu.enable=1
** Installer l’extension PHP Memcached via PECL**
Si tu veux la dernière version ou si ton système ne propose pas php8.3-memcached via APT, tu peux installer l’extension Memcached avec PECL :
sudo apt update
sudo apt install php-pear php8.3-dev libmemcached-dev build-essential zlib1g-dev
sudo pecl install memcached
Pendant l’installation, PECL peut demander des options (compression, SASL). Tu peux laisser les valeurs par défaut si tu n’as pas besoin d’authentification.
Ensuite, active l’extension dans PHP :
echo "extension=memcached.so" | sudo tee /etc/php/8.3/mods-available/memcached.ini
sudo phpenmod memcached
Redémarre PHP-FPM :
sudo systemctl restart php8.3-fpm
Vérifie que l’extension est bien chargée :
php -m | grep memcached
Tu dois voir memcached.
Ou via phpinfo(), la section memcached support: enabled.
Configurer MediaWiki avec PECL Memcached
Dans LocalSettings.php, utilise l’implémentation PECL :
$wgMainCacheType = CACHE_MEMCACHED;
$wgParserCacheType = CACHE_MEMCACHED;
$wgMessageCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = [ '127.0.0.1:11211' ];
Pourquoi ?
memcached-peclutilise la classe native Memcached (C), plus rapide et avec support SASL, compression, etc.
Nettoyage
Commandes servant à “vider” complètement les caches et sessions en cours. Elles agissent sur deux systèmes différents : PHP et Memcached.
1️⃣ sudo rm -f /var/lib/php/sessions/*
- Objet : supprimer tous les fichiers de session PHP stockés sur disque.
- PHP stocke parfois les sessions utilisateurs dans des fichiers sur le serveur (
/var/lib/php/sessions/par défaut sur Ubuntu/Debian). - Quand tu fais :
sudo rm -f /var/lib/php/sessions/*
- Tu supprimes toutes les sessions en cours.
- Conséquence : tous les utilisateurs connectés devront se reconnecter.
- Utile pour repartir avec un état propre, par exemple après un problème de session ou après une migration.
2️⃣ echo "flush_all" | nc 127.0.0.1 11211
- Objet : vider toutes les données stockées dans Memcached.
nc 127.0.0.1 11211→ se connecte au serveur Memcached local sur le port 11211.flush_all→ commande Memcached qui supprime toutes les clés en cache immédiatement.
Concrètement :
- Cache de pages MediaWiki (
parser cache,main cache) - Cache des sessions si
$wgSessionCacheType = 'memcached-pecl' - Tout ce qui est temporairement stocké pour accélérer les requêtes
⚠️ Important
- Après ces deux commandes, MediaWiki recalculera toutes les pages et sessions → certaines pages peuvent être lentes la première fois qu’on les charge (cache froid).
- C’est utile pour résoudre des problèmes de session corrompue ou de cache invalide, mais pas à faire régulièrement en production.
En résumé :
| Commande | Cible | Effet | |
|---|---|---|---|
rm -f /var/lib/php/sessions/*
|
Sessions PHP sur disque | Déconnecte tous les utilisateurs, supprime les sessions | |
| nc 127.0.0.1 11211 | Memcached | Vide tous les caches (pages, sessions, objets) |