Sin impuesto Con impuesto

La tienda se cae cada día a la misma hora: bots y errores

Un compañero veía su tienda caerse todos los días a las 12:25 con miles de visitas desde China. Otros miembros tenían lo mismo, siempre a horas fijas. Recogemos lo que se probó, por qué bloquear IP no bastó, el peligro de las listas de bots copiadas y por qué arreglar errores reduce el consumo.

Equipo Rekire
Actualizado: 17/01/2024 7
La tienda se cae cada día a la misma hora: bots y errores
Compartir:

Un compañero escribió en enero de 2024 desesperado: su tienda se caía todos los días a las 12:25. Las consultas lentas no mostraban nada raro, había desactivado todos los módulos posibles y había bloqueado millones de IP de China, de donde venían unas 2.000 visitas en esa hora. Seguía cayéndose. Otros miembros contaron lo mismo: picos siempre a las mismas horas.

Primero: ¿qué se ejecuta a esa hora?

Una caída a una hora exacta huele a tarea programada antes que a ataque. A otro miembro con picos parecidos, una compañera le recomendó descartar primero las copias de seguridad programadas y mirar los registros justo en los minutos de lentitud. Antes de bloquear nada, revisa:

  • Las copias de seguridad del hosting y las tuyas.
  • Los cron de PrestaShop y de los módulos: importaciones, feeds, regeneración de sitemaps o del índice de búsqueda.
  • Las tareas del propio servidor, si es un VPS.

Después: quién visita a esa hora

Gustavo, de la comunidad, lo había visto en varios clientes, siempre entre las 12 y las 13 o entre las 18 y las 19. Al mirar los registros, buena parte de las peticiones eran de Googlebot, Bingbot y otros buscadores, que no se pueden bloquear, y el resto de rastreadores agresivos. En otro caso de esas semanas eran decenas de IP rusas.

Lo que hay que sacar del registro de accesos de esa hora es: qué agentes de usuario aparecen más, qué URL piden (búsquedas, filtros, combinaciones de parámetros sin fin) y desde qué rangos.

Los errores multiplican el consumo

Gustavo añadió algo que se suele pasar por alto: una tienda con errores consume más recursos con cada visita, y cuando llegan cientos de bots a la vez el servidor no da abasto. Por eso, además de bloquear, arregla los errores y avisos que tenga la tienda: cada página que da un error o genera avisos de PHP cuesta más de servir. Él llegó a programar un módulo para registrar esos errores sin tener que tocar el index.php.

Bloquear sí, pero con cuidado

robots.txt o .htaccess

Se preguntó en el grupo qué es mejor. El robots.txt es una petición: los buscadores serios la respetan y los bots malos la ignoran. Para cortar a un bot concreto hace falta bloquearlo en el servidor o antes.

Las listas copiadas

Un miembro compartió una lista enorme de agentes de usuario para bloquear desde el .htaccess y él mismo avisó de que parecía desactualizada. Peor: esa lista incluía googlebot, msnbot y slurp, los rastreadores de Google, Bing y Yahoo. Pegarla tal cual saca tu tienda de los buscadores. Si bloqueas por agente de usuario, hazlo solo con los que has visto en tus registros:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (MJ12bot|DotBot|PetalBot) [NC]
RewriteRule .* - [F,L]
</IfModule>

Pon los nombres de tus registros en lugar de los del ejemplo y colócalo al principio del fichero, fuera del bloque que PrestaShop regenera (el que va entre los comentarios ~~start~~ y ~~end~~), para que no se pierda. Haz antes una copia del .htaccess y pruébalo en una copia de la tienda.

Mejor antes de que lleguen

Bloquear IP una a una no escala, como comprobó el compañero. Rekire le recomendó trabajar con el hosting y poner Cloudflare delante; otros propusieron bloquear rangos con el cortafuegos del servidor. Así el tráfico no deseado no llega ni a PHP.

Y si el hosting solo te dice «contrata más»

Otro miembro, con picos de CPU en su VPS administrado, recibió esa respuesta. Más recursos tapan el síntoma un tiempo. Lo que lo resuelve es saber qué pasa en esos minutos.

Para encontrar qué páginas y módulos consumen más, RKR Diagnoses hace un diagnóstico de rendimiento de la tienda, y el módulo Centinela te avisa por Telegram de los errores.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba