Dentro de los códigos de error que un servidor puede devolver, algunos son más confusos que otros. Hay casos en los que las causas que generan el error pueden ser tan variadas, que localizar su causa puede ser un auténtico quebradero de cabeza. Y el error 503 Service Unavailable (servicio no disponible) puede ser, en determinadas circunstancias, uno de ellos.
Vamos a ver cuáles son las causas que pueden generar un error 503 (centrándonos, por supuesto, en WordPress), y cómo puedes localizar su causa y corregirlo.
Tabla de contenidos
Lo que hay que tener claro ante todo es que el error 503 es un mecanismo de seguridad del servidor, una especie de «corte de emergencia para que no pete todo». Algo así como el diferencial de la luz, que ante un pico de tensión salta y corta la corriente.
En general, un servidor responde con un código de error 503 Service Unavailable cuando se le están solicitando más recursos de los que podría aportar. De esta forma corta ese servicio (de ahí el Service Unavailable) pero evita que se vean afectados otros servicios que también se están ejecutando en el servidor, como el correo electrónico, las bases de datos, o incluso otros sitios web en el caso de servidores compartidos.
Y ahora que ya sabes por qué se genera ese error, puedes comprender que en realidad es bastante genérico y que, por ello, localizar su causa puede llegar a ser difícil: cualquier cosa que consuma demasiados recursos en el servidor hará que éste responda con un error 503.
Error 503 generado por un exceso de tráfico
Por ejemplo, si el servidor está recibiendo más tráfico (y, por tanto más peticiones) de las que soporta. Bueno, en este caso puede ser una buena noticia: tu web ha crecido, y el servicio que contrataste con tu empresa de hosting se ha quedado pequeño.
Esto puede resultar algo confuso, ya que el error comienza a aparecer de repente, y se vuele cada vez más frecuente (según tu tráfico va aumentando), y tú como usuario podrías achacarlo a algún cambio que hayas hecho (un nuevo plugin, algo que has tocado en la configuración, etcétera).
Además, en casos así este error viene y va sin causa aparente: un momento funciona todo bien, al siguiente comienza a dar el error 503, y poco después todo se soluciona por arte de magia.
Si te está pasando algo así, deberías mirar las métricas de consumo de recursos de tu servidor (en el panel de control del hosting). Configurar un buen sistema de caché, prescindir de los plugins más pesados o deshabilitar el wp-cron y configurar un cron real pueden mitigarlo al principio, pero antes o después tendrás que contratar un servicio que te permita mayor capacidad de procesamiento.
También pueden aparecer de forma repentina y puntual, de nuevo sin causa aparente, y desaparecer de la misma forma. En este caso suele deberse a picos de tráfico: de pronto las visitas peticiones aumentan de forma inesperada y el servidor «cierra el grifo» si ve que no va a poder con toda esa carga.
Y digo peticiones y no visitas porque aquí pueden haber dos causas para ese aumento del tráfico:
- Causas «naturales», con visitas reales, como que por ejemplo un influencer o una web con mucha audiencia te enlacen, o que una publicación tuya se haga viral, y te comiencen a llegar visitas a montón.
- O bien puede deberse a un ataque, con miles de peticiones que bloquean tu servidor (lo que se conocen como ataques DoS o, peor, DDoS). Ya ves que en este caso no hay visitas ni nada, sino alguien con mucho tiempo y ganas de fastidiar.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Solucionar un error 503 en WordPress
Las que hemos visto hasta ahora son causas que podríamos llamar externas: un exceso de peticiones que llegan al servidor desde fuera y sobrepasan su capacidad, obligándole a responder con un error 503. Pero además este exceso de peticiones puede deberse a algo que está mal «dentro», y ahí es donde nos toca remangarnos y ver qué está pasando, y dónde.
En este caso el culpable suele ser un script que se ha desbocado, ha quedado ejecutándose en background y consumiendo recursos fuera de control. Y cuando hablo de script me refiero, en este caso, a PHP (JavaScript no se ejecuta en el servidor sino en el navegador, y cuando un JavaScript se desboca te puede bloquear el navegador pero no afecta al servidor).
Pero claro, toca comenzar a buscar, ya que pueden ser varias cosas. Como aquí hablo de WordPress, tendremos que buscar al culpable en tres sitios: en un plugin, la plantilla o un código personalizado (snippet).
Por supuesto, el primer sitio donde mirar es obvio: el log de errores del servidor. Accede por FTP y busca un archivo llamado error.log, errors.log, php_errors.log o similar, ábrelo (son archivos de texto plano) y busca en las últimas líneas. Si tienes suerte habrás localizado al culpable.
Buscando al culpable del error 503 entre los plugins
Si no has tenido suerte, habrá que empezar por los plugins, que son los que tienen más papeletas: cuando no sabemos la causa del error, éste es el mejor sitio para empezar a buscar. Evidentemente el error 503 habrá dejado fuera de servicio también tu escritorio de WordPress, así que tendrás que acceder por FTP (o, en su defecto, a través del gestor de archivos del panel del hosting).
El objetivo es desactivar todos los plugins de un plumazo, y comprobar así si uno de ellos es el responsable del desaguisado. Para ello basta con ir al directorio wp-content y cambiar el nombre de la carpeta plugins por cualquier otro (por ejemplo _plugins).
Hacer esto es suficiente para que WordPress no los encuentre y deje de utilizarlos, así que si ahora recargas y tu error 503 ha desaparecido, enhorabuena, ya sabes algo más. No has terminado, claro está: te falta averiguar cuál de ellos está fallando.
Ya imaginarás cómo hacerlo: vuelves a restaurar el nombre a la carpeta plugins y, dentro de ella, comienzas a cambiar uno a uno el nombre a los directorios de los plugins individuales. Cuando el error reaparezca, ya has encontrado al culpable. Elimínalo sin piedad.
Si la causa del error 503 es tu plantilla
Como ya imaginarás, aquí el proceso es similar. Si no has tenido éxito con los plugins, el siguiente sospechoso es el theme, así que puedes ir a wp-content/themes y cambiar el nombre de la carpeta de tu plantilla.
Ahora tu web no tiene theme, así que aunque el error se haya solucionado la web estará hecha un desastre, pero podrás entrar sin problemas al escritorio. Es momento de instalar otro theme (si no tenías uno de reserva), activarlo y comenzar a adaptar el diseño. Ahí tienes trabajo para un rato.
Arreglando un desastre del que somos culpables: los snippets de código y el error 503
A veces podemos creer que el culpable es la plantilla porque la desactivamos por FTP y el error 503 desaparece, pero puede no ser así. ¿Has utilizado alguna función personalizada, algún snippet de código, en el archivo functions.php de tu tema?
Porque puede ser, maifrén, que el culpable sea ese snippet, y al desactivar la plantilla el error desaparece porque también deja de utilizarse su functions.php. Por cierto, ya sabes que yo no recomiendo utilizar ese archivo para tus funciones personalizadas, tienes mejores alternativas:
Así que ya sabes: si utilizas ese archivo para tus propios códigos, antes de tomarte todo el trabajo que supone cambiar la plantilla, prueba a eliminar el functions.php (por supuesto, descárgatelo primero como copia de seguridad). Quizá el culpable sea un código que tú mismo pusiste ahí.
¿Y si todo eso no es para mí? Una solución fácil y rápida
Si crees que dar todos esos pasos, localizar el error y solucionarlo, queda fuera de tus habilidades o, simplemente, tienes mejores cosas en las que invertir tu tiempo, siempre te queda la solución fácil y rápida: mi servicio de resolución de emergencias WordPress. 🙂
En ese caso, sería tan fácil para ti como contactar conmigo. 🙂
Jorge dice
Enrique;
Gracias por tu artículo, ha sido interesante.
Tengo una duda, ya tengo identificado al responsable de mi error 503.
El problema es que es WOOCOMMERCE, es el alma del sitio web, el catalogo de productos fundamental para el negocio y requisito inamovible del proyecto. ¿Que se hace en un caso como este?
Gracias.
Enrique J. Ros dice
Hola Jorge
Que el error lo dispare WooCommerce significa que él sea el causante último. De hecho un error como este (que es causado por un exceso en el consumo de recursos) es habitual que se solucione desactivando los plugins que más recursos consumen, pero la solución pasa por asignar a la web los recursos que necesita. Otra cosa sería que se disparara por un plugin pequeño o un snippet.
Contacta con tu hosting y muy posiblemente ellos puedan decirte qué métrica se te está yendo y cuál es la mejor solución (que quizá pase por contratar un servicio superior al que tienes contratado).
Un saludo.