¿Qué es el Error 504 Gateway Time-out en PrestaShop?
El error 504 Gateway Time-out ocurre cuando un servidor que actúa como puerta de enlace o proxy no recibe una respuesta a tiempo del servidor backend u otro recurso necesario para completar la solicitud del navegador. En una plataforma de comercio electrónico como PrestaShop, este fallo suele manifestarse durante la generación de facturas masivas, la importación de grandes catálogos de productos o al procesar consultas pesadas en la base de datos.
Principales causas del error 504 en servidores de PrestaShop
- Tiempo de espera agotado (timeout) en el servidor web Nginx o Apache.
- Configuración insuficiente de PHP-FPM o max_execution_time.
- Sobrecarga en el servidor de base de datos MySQL o MariaDB.
- Problemas de enrutamiento o bloqueos causados por servicios externos o CDN (como Cloudflare).
Método 1: Aumentar el tiempo límite en PHP y PHP-FPM
La causa más común es que un script PHP tarda más de lo permitido en ejecutarse. Para solucionarlo, debes modificar los parámetros de tiempo de ejecución en tu archivo php.ini o mediante la configuración de tu panel de hosting (cPanel o Plesk).
- Accede a tu servidor mediante SSH o al Administrador de Archivos de tu hosting.
- Busca el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu PrestaShop. - Modifica o añade las siguientes directivas con valores superiores:
max_execution_time = 300max_input_time = 300memory_limit = 512M - Si utilizas PHP-FPM, edita el archivo de configuración del pool (por ejemplo,
/etc/php/8.1/fpm/pool.d/www.conf) y ajusta el parámetro:request_terminate_timeout = 300 - Reinicia el servicio PHP-FPM ejecutando en la terminal:
sudo systemctl restart php8.1-fpm(ajusta la versión según corresponda).
Método 2: Ajustar los tiempos de espera (Timeouts) en Nginx y Apache
Si tu servidor utiliza Nginx como proxy inverso frente a Apache, es probable que Nginx esté cancelando la conexión antes de que PHP termine de procesar la solicitud de PrestaShop.
- Abre el archivo de configuración de tu sitio en Nginx (habitualmente en
/etc/nginx/sites-available/tu-tienda.conf). - Añade o incrementa los valores de timeout dentro del bloque
location ~ \.php$:proxy_connect_timeout 300s;proxy_send_timeout 300s;proxy_read_timeout 300s;fastcgi_read_timeout 300s; - Guarda los cambios y valida la sintaxis de Nginx con el comando:
sudo nginx -t - Recarga el servicio para aplicar los cambios:
sudo systemctl reload nginx
Método 3: Optimizar la Base de Datos y las Consultas en PrestaShop
Una base de datos fragmentada o con tablas sobrecargadas de logs y carritos abandonados puede ralentizar las consultas, provocando el timeout.
- Accede a tu gestor de base de datos (phpMyAdmin).
- Selecciona la base de datos de tu tienda PrestaShop.
- Optimiza las tablas más pesadas, especialmente
ps_connections,ps_guest,ps_logyps_sessions. Puedes vaciar las tablas de logs y conexiones si ocupan demasiado espacio. - Utiliza la herramienta integrada de PrestaShop en Parámetros Avanzados > Rendimiento para limpiar la caché de forma regular y desactivar módulos de terceros que realicen peticiones externas lentas en el backend.