Error 504 (Gateway Time Out) - Cómo evitarlo en tu web o blog
El error 504 - Gate way Time Out es un error bastante común cuando una web no funciona. Junto con el error 404 y el 500 es de los más conocidos. Aunque el motivo es bien distinto, en este artículo lo comentamos en profundidad con un lenguaje que entenderás sin problemas.
Tabla de contenidos - Error 504 (Gateway Time Out) - Cómo evitarlo en tu web o blog
Introducción a los errores web
El error 404 indica un elemento inexistente, el error 500 indica un error del servidor, mayormente debido a un error en la programación. En cambio el error 504 indica que se ha excedido el tiempo de respuesta del servidor y por tanto la petición no se ha podido tramitar.
Está totalmente relacionado con la denegación de servicio, y uno de los motivos por los que puede ser debido es a un ataque por denegación de servicio. Aunque a continuación comentaremos otros motivos no menos importantes.
Motivos principales por los que se producen errores 504 en nuestra web
Estamos sufriendo un ataque
Quizá sea el principal. O el más común. Todas las webs son susceptibles de ataques, a veces basta con bloquear un unas cuantas ips, en la mayoría de casos son ataques que provienen de bots con ips Rusas, Chinas...
Hay errores en nuestro código
A veces puede producirse un bucle donde no debiera, si has subido un cambio recientemente a tu web, revísalo para descartar errores en la programación.
Existe una sobre carga debido a un alto porcentaje de usuarios conectados
El overload es otra de las causas más comunes, a veces no nos damos cuenta, pero nuestro servidor sufre picos inesperados y es probable que colapse. Si es por este caso, podemos notar un funcionamiento raro en nuestra web, lentitud en las respuestas y micro cortes. Normalmente se auto soluciona, pero es un buen indicativo para pensar en la optimización del código o en la ampliación de las capacidades de nuestro alojamiento, ya sea un hosting o un servidor.
Incompatibilidad entre Apache y Ngnix
En algunos casos nos podemos encontrar con estos dos servidores webs funcionando al mismo tiempo. Apache se encarga de procesar las solucitudes PHP mientras que Ngnix se dedica exclusivamente a procesar las peticiones de los archivos estáticos, como librerías, CSS, JS, imágenes... En algunos casos pueden haber conflictos.
Fallo en el CDN
Si nuestra web usa un CDN para agilizar algunas peticiones y nos encontramos conque algún servidor CDN tiene problemas pueden producirse errores 504.
Posibles Errores 504 En Wordpress
Problemas con la plantilla o tema
Problemas con algún plugin
Actualización del núcleo de Wordpress
Incompatibilidad con el hosting
Si sufres este problema con tu Wordpress, contáctame y te ayudaré encantado a solucionarlo.
¿Qué podemos hacer para mitigar el error 504?
- Actualizar la página varias veces
- Prueba con un navegador diferente o con diferentes dispositivos
- Ampliar las capacidades de nuestro hosting
- Optimizar la programación
- Instalar medidas para mitigar ataques DDOS
Reconocer errores 504 Gateway Time Out es sencillo
Los errores 504 Gateway Time Out se suelen presentar de cualquiera de las siguientes formas, todos aunque se presenten de forma diferente, pero se refieren al mismo error.
-
Error 504
-
504
-
Gateway Time Out
-
Error 504 Gateway Time Out
-
HTTP 504 Timeout
-
Timeout
-
Error HTTP 504
-
HTTP 504 Nginx
-
504 Timeout
-
HTTP Timeout Nginx
Cómo solucionar el error 504 Gateway Time-out
La mayoría de casos son errores provocados por el servidor, en los que tiene que ver mucho más la configuración de hosting, programación y la técnica del lado del servidor. Aunque también puede ser debido a problemas y configuraciones incorrectas por parte del usuario. Aunque son los menos. A continuación vamos a ver unas cuantas soluciones que cualquier usuario puede ir aplicando para intentar mitigar este error en cualquier web ya sea Wordpress o no.
Lo primero es actualizar la página varias veces.
Actualiza, con CTRL + F5 o CTRL + R. Es clave, lo mismo sólo es un error momentáneo y esporádico. Una y no más. Si se repite si deberíamos estudiarlo con más detenimiento pero sino... A correr. Espera un poco y actualiza de nuevo. Sino puedes seguir probando las siguientes soluciones. Uno de los casos más comunes como hemos comentado antes es que el servidor esté recibiendo más solicitudes de lo habitual en ese momento y no pueda procesar más. Por eso debemos tener paciencia y probar de nuevo. En este caso podemos valorar migrar nuestra web a un servidor o hosting más potente.
Muy recomendable:
Lo siguiente es probar con un navegador diferente o con diferentes dispositivos.
La caché de los navegadores nos puede jugar malas pasadas. Entra en modo incógnito o desde dispositivos diferentes, también nos vale probar con Chrome si usamos Firefox, o al contrario, también podemos usar Opera...
Optimizar la programación - Revisa el log o registro de errores
¿El error 504 gateway timeout persiste? debemos tener en cuenta que también puede ser causado por los cambios o actualizaciones recientes en el sitio web. La forma más rápida de averiguarlo es verificar el registro de errores para encontrar pistas. Los usuarios de WordPress pueden habilitar el registro de mensajes de error agregando las siguientes líneas al archivo wp-config.php:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
Error HTTP 504 con Nginx - PHP-FPM y Apache (solución)
Una vez comprobados los puntos anteriores, podemos comenzar a revisar la configuración de varios puntos en el servidor. Lo más práctico es aumentar el tiempo de ejecución para hilos PHP. Tanto de Apache como de Ningx.
Aumentar tiempo de ejecución en Apache
En Apache se puede aumentar el tiempo de ejecución de un hilo de PHP predeterminado desde el archivo httpd.conf. Por ejemplo:
# Timeout: The number of seconds before receives and sends time out. Timeout 600
Además, aumentar el límite de max_execution_time en php.ini:
max_execution_time 300
Además de guarda los cambios, se debe reiniciar el servidor Apache.
Cambiar el tiempo de ejecución máximo en PHP-FPM
Otra de las causas de que no se terminen de ejecutar las peticiones desde nginx al backend, generando errores HTTP 504 de gateway timeout es que el backend tenga algún límite de tiempo de ejecución. En el caso de PHP-FPM, por ejemplo, podemos ajustar el tiempo máximo de ejecución del código PHP mediante las siguientes configuraciones:
request_terminate_timeout dentro del archivo /etc/php5/fpm/pool/www.conf o /etc/php7/fpm/pool/www.conf
request_terminate_timeout = 300
max_execution_time dentro del archivo /etc/php5/fpm/php.ini o /etc/php7/fpm/php.ini
max_execution_time = 300
Cuando hayas guardado los cambios, reinicia Nginx e intenta acceder nuevamente al sitio web.
Error HTTP 504 Gateway time out usando nginx como proxy
El error HTTP 504 tambien puede darse en los casos en que usamos nginx como un proxy para servir contenido desde otro servidor HTTP. Este modo de funcionamiento se llama Proxy y deberemos ajustar los siguientes valores de configuración del site:
proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300;
Los valores que se especifican en estas configuraciones de nginx y php siempre se refieren a segundos. No son valores que seguir al pie de la letra. Ajusta los números a tu entorno.
Por último contactar con el servicio de soporte o atención al cliente
En algunos casos depende directamente del servicio de hosting que estemos usando. Por lo tanto en caso de que persista el error 504 gateway time-out después de intentar las soluciones anteriores. Te aconsejo que te pongas en contacto con el servicio de soporte o atención al cliente. Ya sea por medio de un ticket, chat o llamada. Ellos te informaran si hay algún problema con el servicio o te ayudarán a solucionar el problema. Proporciona toda la información posible sobre el error. Cuando ha empezado a producirse, los últimos cambios producidos en tu web, etc...
¡Muy importante! Además de básico para evitar que se produzca el error 504 por motivos de seguridad
Debemos tener instalado y configurado los siguientes complementos Fail2Ban y ModSecurity, si tenemos un hosting al uso o un VPS administrado seguramente ya estén instalados y configurados, pero si tenemos un servidor dedicado o un VPS administrador por nosotros mismos, estas tareas recaen en nosotros. Asegúrate de tenerlo al día. Dos artículos muy útiles para este cometido :
Cómo instalar y configurar ModSecurity en Plesk
Cómo instalar y configurar Fail2Ban en Plesk