Analisis: Aula Virtual

Inicio

NFS

nodo01

Nodo02

Nodo03 

Nodo4

Nodo5

Nodo06

Ver proceso top

apt install iotop –y 

iotop -ao -P 

Se determina que el proceso php-fpm es quien consume el CPU 

Para ver disco 

apt install sysstat –y 

Nodo1 datos antes

apt install sysstat ioping iotop -y
  • Estadisticas
# Carga del sistema
uptime

# Memoria, swap, I/O y CPU en tiempo real
vmstat 1 10

# Procesos bloqueados esperando I/O (estado D) — causa real del load alto
ps aux | awk '$8=="D"' | wc -l

# Ver todos los procesos bloqueados con detalle
while true; do ps aux | awk '$8=="D"' | awk '{print $0}'; sleep 1; done

Diagnóstico de disco

bash

# Estadísticas detalladas de I/O por dispositivo
iostat -x 1 10

# Solo dispositivos activos sin líneas vacías
iostat -xz 1 5 | grep -v "^$"

# Latencia real del disco (benchmark)
ioping -c 20 /var/www/html/

Diagnóstico de I/O por proceso

bash

# Ver qué procesos consumen más I/O de disco
iotop -ao -P

Diagnóstico de almacenamiento

bash

# Ver dispositivos y filesystems
lsblk -f

# Ver espacio y puntos de montaje
df -h

# Ver montajes activos (detecta NFS)
mount | grep nfs

Diagnóstico de PHP y OPcache

bash

# Ver si OPcache está activo en tiempo real
php8.3 -r "echo opcache_get_status()['opcache_enabled'] ? 'ACTIVO' : 'INACTIVO';"

# Ver configuración de OPcache
php8.3 -i | grep -i opcache | grep -E "enable|memory|files"

# Ver configuración de sesiones PHP
php8.3 -i | grep session.save

# Ver configuración de OPcache en php-fpm
php-fpm8.3 -i | grep "opcache.enable =>"

Diagnóstico de Apache/Moodle

bash

# Requests en el último minuto
grep "$(date '+%d/%b/%Y:%H:%M')" /var/log/apache2/access.log | wc -l

# Formato del access log
head -5 /var/log/apache2/access.log

Hallazgos clave encontrados con estos comandos:

  • OPcache inactivo en php-fpm → lecturas masivas de PHP desde disco
  • moodledata en NFS (10.0.3.139:/MDNFS) → sessions, cache y archivos por red
  • Latencias de disco de hasta 346ms en dm-1
  • 37 procesos php-fpm en estado D → causa del load average alto

Dignostico

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

R 50

  • Corregimos el archivo de opcache
cat > /etc/php/8.3/fpm/conf.d/10-opcache.ini << 'EOF'
; configuration for php opcache module
; priority=10
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.save_comments=1
opcache.jit=off
EOF
  • Reiniciamos
systemctl restart php8.3-fpm
  • Verificamos que fpm lo tiene activo
php-fpm8.3 -i | grep -i "opcache.enable =>"
  • Respuesta
opcache.enable => On => On