- Ver la versión disponible
# Ver qué versión de Redis está disponible en Debian 13
apt-cache show redis-server | grep Version
- Instalamos
apt install redis-server -y
- Versión
redis-server --version
systemctl status redis-server

- Copiamos el archivo de configuración
cp /etc/redis/redis.conf /etc/redis/redis.conf.backup
- Le agregamos
cat > /etc/redis/redis.conf << 'EOF'
# Red - escuchar en todas las interfaces
bind 0.0.0.0
port 6379
protected-mode no
# Memoria - 20GB de los 24GB disponibles
maxmemory 20gb
maxmemory-policy allkeys-lru
# Persistencia desactivada - sesiones y caché son regenerables
save ""
appendonly no
# Conexiones
tcp-backlog 511
timeout 300
tcp-keepalive 300
maxclients 2000
# Rendimiento
hz 20
dynamic-hz yes
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
# Logs
loglevel notice
logfile /var/log/redis/redis-server.log
# Base de datos
databases 4
EOF
- Reiniciamos y probamos
systemctl restart redis-server
redis-cli ping
En el cliente: nodo01
apt install php8.3-redis -y
- Verificar que la extensión cargó:
php8.3 -m | grep redis
- Respuesta
redis

- Abrimos el archivo de configuración de moodle
nano /var/www/html/config.php
- Y antes de la linea
require_once(__DIR__ . '/lib/setup.php');
- Agregamos
// Sesiones en Redis
$CFG->session_handler_class = '\core\session\redis';
$CFG->session_redis_host = '10.0.3.131';
$CFG->session_redis_port = 6379;
$CFG->session_redis_database = 0;
$CFG->session_redis_auth = '';
$CFG->session_redis_prefix = 'mdl_sess_';
$CFG->session_redis_acquire_lock_timeout = 0;
$CFG->session_redis_lock_expire = 7200;
$CFG->session_redis_lock_wait = 500;
- Instalamos
apt install redis-tools -y
- Vamos a apasdar la cache del NFS a directorio local
- Creamos
# Crear directorios locales para caché
mkdir -p /var/moodlecache/cache
mkdir -p /var/moodlecache/localcache
mkdir -p /var/moodlecache/temp
chown -R www-data:www-data /var/moodlecache
chmod -R 755 /var/moodlecache
- Abrimos el archivo
nano /var/www/html/config.php
- Agregamos
// Caché local en disco local del nodo
$CFG->localcachedir = '/var/moodlecache/localcache';
$CFG->tempdir = '/var/moodlecache/temp';
$CFG->cachedir = '/var/moodlecache/cache';
- Guardar y verificar:
ls -la /var/moodlecache/
grep "localcachedir\|tempdir" /var/www/html/config.php
- Reiniciamos
systemctl restart php8.3-fpm
Analisis
- para ver al load avegrage
uptime && ps aux | awk '$8=="D"' | wc -l
- Inicio

- Final
- Ver nodos esperando NFS
ps aux | awk '$8=="D"' | awk '{print $2}' | while read pid; do
cat /proc/$pid/wchan 2>/dev/null
done | sort | uniq -c | sort -rn
- Inicio

- Ver cantidad de conexiones
grep "$(LANG=C date '+%d/%b/%Y:%H:%M')" /var/log/apache2/access.log | wc -l
- Inicio

- Ver sessiones en redis bloqueadas
redis-cli -h 10.0.3.131 --scan --pattern "mdl_sess_*lock*" | xargs redis-cli -h 10.0.3.131


Cron para limpiar cache
- Verificamos si existe algunb cron de moodle
crontab -l -u www-data
grep -r "moodle\|php.*admin" /etc/cron* 2>/dev/null
- No existe

- Creamos el cron
crontab -u www-data -e
- Agregamos
* * * * * /usr/bin/php8.3 /var/www/html/admin/cli/cron.php > /dev/null 2>&1

- Creamos un cron que limpie la cache local cada semana
cat > /etc/cron.weekly/moodle-cache-cleanup << 'EOF'
#!/bin/bash
find /var/moodlecache/cache -type f -atime +7 -delete
find /var/moodlecache/localcache -type f -atime +7 -delete
find /var/moodlecache/temp -type f -atime +1 -delete
EOF
- Le damos permisos
chmod +x /etc/cron.weekly/moodle-cache-cleanup
- Verificar
crontab -l -u www-data
ls -la /etc/cron.weekly/moodle-cache-cleanup
- Es importante verificar que el tamaño de la cache no crece semana a semana y se limpia cada semana para esto
du -sh /var/moodlecache/
