Defender al 100% de CPU y Apache en humo: Cómo diagnosticar la saturación en XAMPP

Si configuras un servidor XAMPP para alojar WordPress, es probable que encuentres problemas de rendimiento inesperados. En este caso específico, Windows Defender estaba consumiendo el 100% de la CPU mientras escaneaba archivos temporales generados por MySQL en la carpeta C:Temp. Esto provocó que Apache (httpd.exe) fallara con un error de corrupción de memoria.

Diagrama de un servidor XAMPP con Windows Defender al 100% y Apache fallando
La saturación de recursos en XAMPP: Defender escaneando los archivos temporales que MySQL genera constantemente.

Inicialmente, sospeché que podría tratarse de un ataque o una intrusión. Sin embargo, tras revisar los registros y el comportamiento del servidor, parece más probable que la carga masiva fuera el resultado de importar 1.500 artículos a WordPress, lo cual disparó las consultas a la base de datos.

Investigación: ¿Ataque o Problema de Rendimiento?

Para aislar la causa del consumo excesivo de recursos, tomé varias medidas de diagnóstico. Primero, cerré el puerto 3306 en el firewall para bloquear cualquier acceso externo directo a MySQL y reinicié el servicio.

A pesar de haber restringido el tráfico entrante, el problema persistía. Al revisar las configuraciones del sistema, noté que la memoria asignada a PHP estaba configurada en 4096M, un valor excesivamente alto para la carga actual, y que el buffer pool de InnoDB en MySQL estaba limitado a solo 16MB.

El Confuso Límite de Ejecución

Además, encontré una discrepancia interesante en los registros. Había un error indicando que se había superado el límite de ejecución de PHP (120 segundos), pero al revisar las configuraciones, descubrí que acababa de cambiar ese valor a 560 segundos. Esto indica que el ajuste del tiempo de ejecución es reciente.

Captura de pantalla de configuraciones de archivo mostrando límites de memoria
Configuraciones críticas de memoria en php.ini y my.ini que requieren revisión inmediata.

Para finalizar el ajuste de memoria y determinar un tamaño adecuado para el buffer pool de InnoDB, necesito saber exactamente cuánta RAM tiene tu servidor. También es necesario ejecutar una consulta en phpMyAdmin para obtener la versión exacta de MySQL o MariaDB que está instalada.

Con esos dos datos, podremos ajustar las configuraciones finales y asegurar que el servidor funcione correctamente sin saturar los recursos del sistema operativo.