Solución: error Service Unavailable en servidores CloudLinux

Solución: error Service Unavailable en servidores CloudLinux

El error "Service Unavailable" es uno de los problemas más comunes en servidores de hosting compartido que utilizan CloudLinux con CageFS y mod_lsapi. Este error indica que el servidor no pudo procesar la solicitud del visitante, generalmente porque el backend de PHP (lsphp) no logró conectarse.

En este artículo aprenderás a identificar la causa raíz del problema y aplicar la solución correcta según el escenario.

Causas comunes

  1. CageFS desactualizado o corrupto: Después de un reinicio del servidor, una restauración de cuenta o una actualización de CloudLinux, el entorno virtual de CageFS puede quedar en un estado inconsistente.
  2. Límites LVE alcanzados: CloudLinux asigna límites de CPU, memoria, procesos (EP) y conexiones a cada cuenta. Si una cuenta alcanza alguno de estos límites, el servidor rechaza las solicitudes con "Service Unavailable".
  3. mod_lsapi no puede conectar con lsphp: El módulo de Apache que conecta con el backend de PHP falla al establecer la comunicación, generando el error connect to lsphp failed: 110.
  4. Procesos lsphp huérfanos: Procesos de PHP que quedaron colgados y están consumiendo los slots disponibles del usuario.

Diagnóstico

Revisar el error log de Apache

El primer paso es identificar el error exacto en el log de Apache. Busca entradas recientes del usuario afectado:

grep -i usuario_cpanel /usr/local/apache/logs/error_log | tail -20

El error típico relacionado con mod_lsapi y CageFS se ve así:

[lsapi:error] [pid 23113:tid 47912125892352] [client 187.188.127.42:46658] mod_lsapi: [host ejemplo.com] [req GET / HTTP/1.1] Connect to backend failed: connect to lsphp failed: 110

Verificar límites LVE

Consulta si el usuario ha alcanzado algún límite de recursos recientemente:

lveinfo --user usuario_cpanel --period=1h

Si ves valores de faults (fEP, fNPROC, fPMEM, fVMEM) distintos de cero, la cuenta está alcanzando sus límites.

Verificar estado de CageFS

Comprueba si CageFS está activo y funcionando correctamente para el usuario:

cagefsctl --check-cagefs

Buscar procesos lsphp huérfanos

Verifica si existen procesos de PHP colgados para el usuario:

ps aux | grep lsphp | grep usuario_cpanel

Solución 1: Remontar CageFS para un usuario

Si el error afecta a un solo sitio o cuenta, remonta el entorno virtual de CageFS para ese usuario específico:

cagefsctl -m usuario_cpanel

Verifica que el sitio cargue correctamente después de ejecutar el comando.

Solución 2: Reparar CageFS para todo el servidor

Si múltiples sitios presentan el error simultáneamente (por ejemplo, después de un reinicio o una actualización), actualiza y remonta CageFS para todos los usuarios:

cagefsctl --force-update
cagefsctl -M

Nota: El comando cagefsctl -M (mayúscula) remonta CageFS para todos los usuarios del servidor. En servidores con muchas cuentas, este proceso puede tomar varios minutos.

Solución 3: Eliminar procesos lsphp huérfanos

Si identificaste procesos de PHP colgados, elimínalos para liberar los slots del usuario:

killall -u usuario_cpanel lsphp

Si deseas eliminar los procesos de lsphp de todos los usuarios (usar con precaución):

killall lsphp

Solución 4: Ajustar límites LVE

Si el diagnóstico reveló que la cuenta está alcanzando sus límites de recursos, puedes ajustarlos temporalmente desde la línea de comandos o de forma permanente desde WHM.

Ajuste por línea de comandos

Para aumentar el límite de Entry Processes (EP) a 30 para un usuario:

lvectl set usuario_cpanel --ep=30

Para aumentar el límite de NPROC (número máximo de procesos) a 50:

lvectl set usuario_cpanel --nproc=50

Aplica los cambios sin reiniciar:

lvectl apply all

Ajuste desde WHM

  1. Inicia sesión en WHM.
  2. Navega a CloudLinux LVE Manager.
  3. Busca el usuario afectado en la pestaña Current Usage.
  4. Haz clic en el ícono de editar y ajusta los valores de EP, NPROC, PMEM o CPU según sea necesario.

Solución 5: Reiniciar mod_lsapi

Si el problema persiste después de las soluciones anteriores, reinicia el servicio de mod_lsapi y Apache:

/usr/local/cpanel/bin/apache_conf_distiller --update
/scripts/restartsrv_httpd

Si utilizas LiteSpeed en lugar de Apache:

/scripts/restartsrv_litespeed

Verificación post-solución

Después de aplicar cualquiera de las soluciones anteriores, verifica que el problema se haya resuelto:
  1. Abre el sitio web afectado en el navegador y confirma que carga correctamente.
  2. Revisa que no aparezcan nuevos errores de lsapi en el log:
tail -f /usr/local/apache/logs/error_log | grep -i lsapi

  1. Monitorea los límites LVE del usuario durante las siguientes horas:
lveinfo --user usuario_cpanel --period=1h

Referencia rápida de comandos

  1. cagefsctl -m usuario — Remontar CageFS para un usuario.
  2. cagefsctl --force-update — Forzar actualización de CageFS.
  3. cagefsctl -M — Remontar CageFS para todos los usuarios.
  4. cagefsctl --check-cagefs — Verificar estado de CageFS.
  5. lveinfo --user usuario --period=1h — Consultar faults de LVE.
  6. lvectl set usuario --ep=30 — Ajustar límite de Entry Processes.
  7. lvectl apply all — Aplicar cambios de LVE.
  8. killall -u usuario lsphp — Matar procesos lsphp de un usuario.
  9. /scripts/restartsrv_httpd — Reiniciar Apache.

Recomendaciones

  1. Siempre diagnostica primero antes de aplicar soluciones. Revisa el error_log y los límites LVE para identificar la causa raíz.
  2. Si el error aparece recurrentemente para un mismo usuario, es probable que la cuenta necesite un plan de hosting con más recursos o una optimización de su aplicación (caché, plugins, consultas a base de datos).
  3. Después de actualizaciones de CloudLinux o del kernel, ejecuta cagefsctl --force-update seguido de cagefsctl -M como medida preventiva.
  4. Configura alertas en CloudLinux LVE Manager para recibir notificaciones cuando un usuario alcance sus límites de recursos frecuentemente.
  5. Considera implementar LVE Warden (disponible en CloudLinux 8+) para automatizar la gestión de límites basándose en patrones de uso.

    • Related Articles

    • Error 'Never Finished' en JetBackup 5

      El error "Never Finished" en JetBackup puede ocurrir cuando un trabajo de respaldo no se completa correctamente, dejando el proceso en un estado de "nunca finalizado". Este problema puede ser causado por diversos factores, como fallos en los ...
    • Error al importar procedimientos almacenados MySQL en cPanel

      Cuando trabajas con bases de datos MySQL que incluyen procedimientos almacenados (stored procedures), es común enfrentarse a errores durante la importación en entornos de hosting compartido con cPanel. Estos errores suelen estar relacionados con el ...
    • Comandos básicos en SSH

      Administración de archivos Copiar un archivo: cp -a archivo.zip archivocopia.zip Crear un archivo: touch /home/usuario/public_html/archivo.html Comprimir un directorio: zip -r archivo.zip /home/usuario/public_html/directorio Comprimir un directorio ...
    • Cómo instalar cPanel en tu servidor o VPS: Guía actualizada por distribución

      cPanel & WHM es el panel de control más utilizado en la industria del web hosting. Si tienes un servidor dedicado o VPS con Webzi (o cualquier otro proveedor), esta guía te muestra cómo instalar cPanel desde cero en los sistemas operativos ...
    • Cómo instalar y configurar Nginx como proxy reverso en cPanel/WHM 🚀

      ¿Qué es Nginx y por qué usarlo con cPanel? Nginx es un servidor web de alto rendimiento que puede funcionar como proxy reverso frente a Apache en servidores cPanel. Esta configuración permite que Nginx maneje los archivos estáticos (imágenes, CSS, ...