Que es el IO Limit en hosting compartido
El IO Limit (limite de operaciones de entrada/salida en disco) es uno de los limites de recursos que CloudLinux aplica a cada cuenta de hosting compartido. Controla la velocidad maxima a la que una cuenta puede leer y escribir datos en el disco del servidor, medida en MB/s o IOPS (operaciones por segundo). Este limite existe porque en hosting compartido, el disco fisico del servidor es compartido entre todas las cuentas, y una cuenta que genera un acceso intensivo al disco puede degradar el rendimiento para las demas.
El uso alto de IO es uno de los problemas de rendimiento mas dificiles de diagnosticar porque no siempre correlaciona directamente con el trafico del sitio. Una tarea en segundo plano, un plugin que escribe constantemente en disco, o un sistema de cache mal configurado pueden generar un IO intensivo incluso cuando el sitio tiene poco trafico.
Causas comunes de alto uso de IO
| Causa | Por que genera alto IO | Solucion |
|---|---|---|
| Cache de paginas en disco sin cache de opcode | Lee y escribe archivos HTML para cada solicitud | Activar OPcache y Redis como backend de cache |
| Logging excesivo de WordPress o plugins | Escribe en archivo de log en cada solicitud | Desactivar el logging de debug |
| Plugin de estadisticas que escribe en DB | INSERT en la base de datos por cada visita | Reemplazar con estadisticas de servidor o Cloudflare |
| Sitio con miles de archivos de cache en disco | El listado de la carpeta de cache es lento | Reducir el numero de archivos en cache |
| Sesiones PHP almacenadas en disco | Lee y escribe un archivo de sesion por usuario | Usar Redis para almacenar sesiones PHP |
Identificar que genera el alto IO
# En VPS con acceso root, ver que proceso genera mas IO iostat -x 1 5 # Con iotop (instalar si no esta disponible) sudo apt install iotop sudo iotop -o # Solo muestra procesos con IO activo
Reducir el uso de IO en WordPress
- Activar OPcache: PHP OPcache almacena el bytecode compilado de los scripts PHP en memoria RAM, eliminando la necesidad de leer y compilar los archivos PHP en cada solicitud. Verificar que esta activo en cPanel > MultiPHP INI Editor y que
opcache.enable=1. - Mover las sesiones PHP a Redis: En lugar de guardar cada sesion en un archivo de disco, usar Redis como backend de sesiones de PHP.
- Desactivar WP_DEBUG en produccion: Verificar que
define('WP_DEBUG', false);en wp-config.php para evitar que se escriba en el archivo debug.log constantemente. - Limpiar la carpeta de cache periodicamente: Vaciar la cache de LiteSpeed Cache o W3 Total Cache de forma regular para evitar que la carpeta de cache acumule miles de archivos que hacen lento el acceso al disco.
