Desarollo Web

Error 504 gateway timeout: ¿cómo solucionarlo?

By Baptiste, on 6 December, 2022 - 11 min read

504 gateway timeout es un error cuya resolución suele estar fuera del alcance del visitante del sitio web. En efecto, se trata de un error del servidor. Sea cual sea el caso, visitante o administrador, hay que saber reaccionar ante tal problema.

Hay varias razones por las que el servidor puede estar experimentando un timeout. Puede tratarse de

  • un servidor caído ;
  • un servidor proxy sobrecargado;
  • Una configuración incorrecta del proxy.

En esta guía explicamos qué significa el error 504 gateway timeout. Detallamos las posibles causas y las soluciones para remediarlas.

504 Gateway timeout: ¿Qué es?

El error 504 Gateway timeout forma parte de la familia de códigos de estado HTTP 5XX. Esta clase incluye códigos que notifican que hay un error con el servidor. Éste no puede dar respuesta a la petición del cliente. Por eso esta familia se denomina códigos de error del servidor.

La notificación 504 Gateway timeout aparece cuando en la ejecución de la petición intervienen dos servidores web.

El primero, que suele ser el servidor principal, está esperando una respuesta de un servidor ascendente.

Este error es similar al estado 502 Bad Gateway. Revela que el servidor principal ha recibido una respuesta no válida del segundo.

Photo by geralt on Pixabay

Algunas variantes del mensaje de error 504 Gateway

En nuestros navegadores, el error 504 se muestra de diferentes formas y mensajes. He aquí algunas de las expresiones más comunes utilizadas para describirlo.

  • 504 Gateway Timeout;
  • NGINX 504 Gateway Timeout;
  • Gateway Timeout Error;
  • Error HTTP 504;
  • HTTP 504;
  • HTTP Error 504 – Gateway Timeout;
  • Error 504
  • Error 504;
  • Tiempo de espera de la puerta de enlace (504);
  • Una pantalla en blanco;
  • La solicitud de la página se canceló porque tardó demasiado en completarse;
  • Esta página no funciona – El dominio tardó demasiado en responder.

Algunos sitios web personalizan su mensaje de error 504 Gateway timeout. Esto puede ser interesante ya que si el mensaje está bien redactado, puede aliviar la decepción de sus usuarios.

¿Qué impacto tiene en el SEO?

Como la mayoría de los estados 5xx, el error 504 impide la carga de una página web. Esto afecta a la experiencia de navegación. Si este error se produce y dura más de lo debido, Google podría desindexar la página afectada.

Cuando los robots de Google se encuentran con un fallo de este tipo en su rastreo web, inicialmente lo consideran temporal. Muestran la página afectada desde su caché mientras esperan a encontrar una solución.

Sin embargo, si el problema dura más de 6 horas, Google lo considerará un problema grave en todo el sitio web. Este juicio puede afectar a la clasificación del sitio en los resultados de búsqueda.

Photo by DiggityMarketing on Pixabay

¿Qué causa el error 504 Gateway timeout?

Hay varias situaciones que pueden causar que aparezca la notificación de error 504 Gateway timeout.

Como se dijo anteriormente, la primera causa de este mensaje de error es el tiempo de espera.

Esto ocurre cuando el servidor upstream, por alguna razón, no consigue servir una respuesta al principal. Suponemos entonces que el servidor upstream está defectuoso o saturado.

El mensaje de error también puede aparecer cuando el router de la red local utilizada por el usuario está sobrecargado. La misma situación se produce cuando el servidor proxy utilizado también está sobrecargado.

Pero en este caso, el fallo no se limita a una sola página web. El mensaje de error aparece independientemente de la página que intentemos cargar. Una configuración incorrecta del proxy en ambos lados también puede crear un error HTTP 504.

¿Cuál es la mejor solución para corregir el error 504 Gateway timeout como usuario?

Para proporcionar una solución real a un error HTTP 504, es necesario dominar los detalles del sitio WordPress afectado. Como hay muchas variables implicadas, empezaremos por las soluciones más sencillas.

Actualizar la página

La solución más fácil es actualizar la página. Así que esperemos unos minutos y volvamos a cargar la página.

Para ello, podemos utilizar la tecla de función F5 del teclado del ordenador. Lo ideal sería incluso vaciar la caché del navegador antes de refrescar la página.

Para realizar ambas tareas al mismo tiempo, podemos utilizar la combinación de teclas CTRL + F5.

Al mismo tiempo, podemos comprobar si el problema no proviene del navegador que estamos utilizando. Para ello, intentemos visitar el sitio web desde otro navegador de Internet.

Si después de todos estos pasos, el problema persiste, comprobaremos si somos los únicos afectados por este fallo. De hecho, existen herramientas online que ayudan a saber si el fallo de un sitio es general o sólo nos afecta a nosotros.

Reiniciar dispositivos de red

El mal funcionamiento o la saturación de dispositivos como el router o el módem de una red local pueden crear un error 504. Reiniciándolos se puede solucionar el fallo de conexión.

El orden en que se reinician estos dispositivos es importante para resolver el problema.

Así que tenemos que empezar desde fuera hacia dentro. Tenemos que volver a encender el equipo dejando el equipo ISP a nuestro dispositivo cliente principal.

Compruebe la configuración del servidor proxy

Entre un terminal de red e Internet puede haber un servidor proxy. Se utiliza sobre todo para proteger la intimidad del usuario. Por ejemplo, oculta la ubicación del usuario a los sitios web.

Hay que decir que no es muy obvio que los servidores proxy causen un error 504, pero a veces puede ocurrir.

Para comprobar si los servidores proxy son los culpables, basta con desactivarlos. Luego tenemos que actualizar la página para ver si el problema se resuelve.

Si no utilizas un proxy, esto no es relevante para ti. Sin embargo, hay que tener en cuenta que es posible activarlos sin darse cuenta. Para estar seguros, comprobemos la configuración del proxy de nuestro navegador y ordenador.

Resolución de problemas de DNS

Los problemas de DNS en el lado del cliente y/o del servidor pueden hacer que aparezca una notificación de error 504.

Un problema de DNS en el lado del servidor puede deberse a que el servidor DNS no responde.

También puede deberse a que el nombre de dominio completo (FQDN) no se resuelva en la dirección IP correcta.

Muchas veces, vemos esta situación después de una migración de un sitio WordPress a un nuevo host. Este problema puede evitarse si esperamos a que se complete la propagación de los registros DNS del dominio.

En el lado del cliente, el problema DNS se soluciona borrando la caché DNS local.

  • Para hacerlo en Windows, basta con escribir el comando ipconfig/flushdns en el símbolo del sistema.
  • En Mac OS, para borrar la caché del sistema operativo, tenemos que abrir el terminal. A continuación, tenemos que escribir el comando sudo killall -HUP mDNSResponder. Este comando sólo funciona con las últimas versiones de Mac OS.

El problema de DNS también se puede solucionar cambiando nuestros servidores DNS temporalmente. Normalmente, los proveedores de servicios de Internet nos asignan DNS por defecto. Podemos cambiarlos por IPs DNS públicas temporalmente.

Póngase en contacto con el administrador del sitio web y con el proveedor de servicios de Internet (PSI)

Si después de todos los pasos anteriores, usted no puede encontrar una solución, puede que tenga que ponerse en contacto con el administrador del sitio. Él podrá informarnos sobre el verdadero problema de su plataforma. También podrá decirnos cuándo se podrá volver a acceder al sitio.

Sin embargo, si el error de conexión sólo nos afecta a nosotros o a una parte de los visitantes, tendremos que buscar la solución en otro sitio. Tal vez un servidor de nuestro ISP esté caído. Para estar seguros, tenemos que ponernos en contacto con él.

Consultar el sitio más tarde

Esta solución es la que aplicamos por despecho. Si todos nuestros intentos de resolver el problema fracasan, no nos queda más remedio que esperar.

Tenemos que esperar a que nuestro ISP o el administrador del sitio web corrijan el error. Entonces podremos visitar la página más tarde para comprobar si el problema se ha resuelto.

¿Cómo solucionar el error 504 Gateway timeout como administrador?

Como administrador de un sitio web, tendremos que dar varios pasos para encontrar una solución.

Aumentar los recursos del servidor

Hay que decir que la falta de infraestructura es la causa más común del error 504. Si nuestro servidor no tiene suficientes recursos para soportar la carga de nuestro sitio web, nos encontraremos con errores de conexión.

La única solución para resolver el problema es elegir un servidor con una mejor infraestructura.

Por ejemplo, si tenemos un sitio WordPress que genera un gran volumen de tráfico, necesitaremos más PHP Workers. Estos workers son proporcionados por la empresa de hosting y se utilizan para ejecutar peticiones en un sitio WordPress.

Cuando todos los PHP workers disponibles en el servidor están ocupados, se forma una cola. Cuando esta cola se hace demasiado larga, el servidor deja de procesar consultas antiguas.

Esto puede causar un error 504. Para evitarlo, debemos pedir a nuestro proveedor de alojamiento que aumente el número de PHP workers. Nuestro sitio web podrá entonces ejecutar varios pedidos al mismo tiempo.

Photo by ColossusCloud on Pixabay

Reducir los retrasos HTTP

Cuando una conexión entre el cliente y el servidor web permanece abierta durante demasiado tiempo, se producen retrasos HTTP.

Con los sitios de WordPress, por ejemplo, esto ocurre cuando se están ejecutando importaciones de WordPress. La solución a este problema pasa por una conexión a Internet más rápida.

Protéjase de ataques DDoS, bots y spam

Los ataques maliciosos tienen la capacidad de hacer caer nuestro servidor web. Pueden hacerlo enviando un gran número de demandas que son capaces de acaparar una gran cantidad de recursos y además suponen una amenaza para nuestro servidor.

Si sufrimos un ataque DDoS o un ataque de bots, nuestro servidor puede verse desbordado. Lo mismo ocurre si nuestro sitio recibe spam. Todo esto puede provocar 504 errores. Como resultado, nuestros usuarios reales ya no podrán acceder a nuestro sitio web.

Para evitarlo, tenemos que proteger nuestro servidor de estas posibles amenazas. Para ello, necesitamos realizar un escaneo de tráfico para detectar patrones irregulares en el tráfico.

Podemos iniciar el escaneo a partir de las IPs de los principales clientes. Gracias a esto, sabremos cuál de los clientes genera el mayor número de peticiones. Si de repente el ancho de banda utilizado por nuestro servidor se vuelve enorme, este informe nos será de gran ayuda.

Sigamos examinando el informe de análisis de caché. Allí veremos el número de peticiones que faltan o se saltan la caché.

Para mayor seguridad, podemos utilizar un plugin de seguridad de WordPress.

Detecta direcciones IP y tráfico preocupantes. Entonces los bloquea. Si no tenemos un plugin de WordPress, podemos pedir a nuestro proveedor de alojamiento que bloquee determinadas direcciones IP.

El bloqueo de IP puede convertirse en una operación interminable. De hecho, muchos atacantes maliciosos, tras su bloqueo, vuelven a la carga cambiando de dirección proxy y de IP.

Resolver problemas de bases de datos

Una base de datos corrupta puede causar un error 504 Gateway timeout. Esta situación es particularmente notable en los sitios de WordPress. Los archivos o tablas corruptos suelen ser los que dañan toda la base de datos.

Una base de datos de WordPress dañada también puede ser el resultado de un hackeo del sitio web. Para solucionar el problema, es necesario reparar la base de datos. Esto implica restaurar a una versión anterior a la piratería y varios otros pasos.

Compruebe los temas y plugins del sitio web

Normalmente, los temas y plugins no causan un error 504. Sin embargo, a veces generan un elevado número de peticiones que no se almacenan en caché.

Esto crea una larga cola y provoca la movilización de una parte importante de los trabajadores del servidor. En este caso, el servidor ya no tiene en cuenta las peticiones antiguas. Esto conduce finalmente a errores 504.

Deshabilitar los plugins es la mejor solución para resolver este fallo.

En WordPress, para desactivar las extensiones, sólo tenemos que ir al dashboard y luego hacer clic en el menú PLUGINS.

A continuación seleccionaremos la opción DESHABILITAR. Esto se hace en el submenú de acciones agrupadas. A continuación marcamos todas las extensiones. Por último, hacemos clic en APLICAR. Todas nuestras extensiones quedarán desactivadas.

La desactivación también se puede hacer vía FTP. Consiste en renombrar el directorio principal de las extensiones.

Una vez desactivadas todas las extensiones, vamos a comprobar si la web se carga correctamente. Si se visualiza correctamente, procederemos a activar las extensiones una tras otra. Con cada plugin activado, debemos comprobar si el sitio funciona.

Este procedimiento ayudará a identificar las extensiones que causan el error 504. Por último, debemos asegurarnos de que WordPress está actualizado.

Los temas y extensiones de nuestro sitio web también deberían estar actualizados. También debemos comprobar la versión de PHP que utiliza nuestro servidor. Debe ser la versión recomendada.

Comprobar el registro de errores

La lectura de los registros de errores es muy útil a la hora de resolver errores 504, especialmente si tienes un sitio WordPress. Con esta lectura, puede reducir la cantidad de problemas que existen en su sitio en un corto período de tiempo.

Si su proveedor de alojamiento no le proporciona acceso a una herramienta de registro, puede utilizar el modo de depuración de WordPress. Lo habilitaremos añadiendo el siguiente código a nuestro archivo wp-config.php.

define (‘WP_DEBUG’, true);
define (‘WP_DEBUG_LOG’, true);
define ('WP_DEBUG_DISPLAY', false);

La constante WP_ DEBUG se utiliza para activar y desactivar la depuración de WordPress. Para aumentar su funcionalidad, esta constante tiene otras dos constantes.

WP_DEBUG_LOG indica que todos los errores deben ser listados en el archivo debug.log. Este fichero se encuentra en el directorio/wp-content/.

Es posible que no encontremos esta carpeta. En este caso, tendremos que crearla nosotros mismos.

WP_DEBUG_DISPLAY se asegura de que los registros de depuración se muestren en la página HTML. Podemos ocultar todos los errores estableciendo esta constante a false. Todavía podemos comprobarlos después. Establecer la constante WP_DEBUG_LOG a true nos ayudará a hacerlo.

También tenemos la posibilidad de descargar el registro de errores de WordPress. En este caso, se tratará de descargar los archivos en bruto de éste a través de FTP. Normalmente se encuentran en el directorio raíz de nuestro servidor. Deberemos verlos abriendo la carpeta llamada “logs”.

También es interesante leer el registro de errores del servidor. Dependiendo de nuestro servidor de alojamiento, estos archivos pueden encontrarse en diferentes carpetas.

  • Para Apache, encontraremos los archivos en /var/log/apache2/error.log/.
  • Para Nginx, vamos a comprobar /var/log/nginx/error.log/.

Configurar correctamente los servidores web

Empecemos añadiendo algo de código a la carpeta httpd.conf de nuestro servidor Apache. Se trata del código Timeout 600.

Cambiando los límites de recursos en Apache

La integración de este código en el documento httpd.conf nos permite aumentar el tiempo de espera del servidor para determinadas consultas. Sólo después de esta duración el servidor considerará que se ha superado el tiempo de espera de la red. Por defecto, el valor del tiempo de espera es de 60 segundos en Apache 2.4.

La adición de esta directiva debe hacerse en el fichero httpd.conf y no en el fichero .htaccess. Sin embargo, no todos los hosts permiten modificar el documento httpd.conf.

En este caso, para aumentar el límite de recursos, debe ir a la carpeta .htaccess de su servidor web. A continuación, cambie el valor de la directiva LimitRequestBody.

A continuación, abra el documento php.ini. Añada la línea de código max_execution_time 300. Por defecto, el valor de esta directiva es de 30 segundos. Aumentarlo permite que los scripts de nuestro sitio web se ejecuten durante más tiempo.

Cambiar los límites de recursos en Nginx

Con Nginx, dos usos son posibles.

  • O bien, usted ha configurado su sitio de WordPress con él.
  • O bien, utiliza este servidor como proxy inverso para Apache.

En ambos casos, una modificación de la configuración permite evitar errores 504.

Configuración en Nginx + FastCGI (PHP-FPM)

NNginx se utiliza a menudo con el gestor de procesos FastCGI. Así que empezaremos las modificaciones con la carpeta PHP-FPM. Para encontrarlo sólo tienes que ir a:

/etc/php7.4/fpm/pool.d/www.conf

Una vez en la carpeta, estableceremos la directiva request_terminate_timeout = 300. Vamos entonces al archivo php.ini de nuestro servidor, se encuentra en:

/etc/php.ini

Abramos el documento, establezcamos la directiva max_execution_time en 300 segundos.

Así que deberíamos tener max_execution_time = 300. Ahora vamos al archivo nginx.conf. En el bloque location de este archivo, añadiremos el código :

location ~. php $ {
...
fastcgi_read_timeout 300;
}

Para que los cambios surtan efecto, necesitamos reiniciar el servidor así como PHP-FPM. Para ello, vamos a utilizar estos comandos:

sudo service nginx reload
sudo service php7.4-fpm reload

Modificación en el caso en que Nginx se utilizaría como proxy inverso a Apache.

Aquí vamos a modificar las directivas que se refieren a los tiempos de espera del servidor. Vamos a abrir el archivo nginx.conf. A continuación, agregue las siguientes directivas:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

Al final de las modificaciones, vamos a recargar el servidor Nginx con el código: sudo service nginx reload.

Otras soluciones para corregir el error 504 Gateway timeout

El firewall de nuestro servidor puede ser la causa del error. Puede tener una configuración incorrecta. Esto impide que el servidor establezca una buena conexión.

Vamos a los registros de errores del servidor web. Aquellos que utilizan un equilibrador de carga también deben asegurarse de que no causa problemas de conectividad de red.

El tiempo de espera puede producirse si hay una mala conectividad entre el servidor web y el servidor proxy. La CDN (red de distribución de contenidos) de nuestro sitio también puede crear un tiempo de espera de 504 Gateway.

Así que vamos a desactivar la CDN (Cloudflare, Sucuri…) y volver a cargar el sitio web para ver si el problema se resuelve.

Si ningún intento de resolver el problema funciona, puede ser el momento de remitirnos al proveedor de alojamiento. Esto puede ser una señal de que el problema está fuera de nuestro control. Ninguna de nuestras aplicaciones es responsable.

El problema puede provenir de uno de los recursos de nuestro proveedor de alojamiento. Nos pondremos en contacto con ellos para que nos ayuden.

Baptiste