Tutorial

Black Friday 2026: que su tienda online aguante la carga

Despliegue13 min de lectura8 pasos

Una tienda que se cae durante el Black Friday pierde ventas que ningún recordatorio recupera, justo cuando hay más visitantes. El servidor no se adivina: se mide sobre una copia, con herramientas gratuitas, leyendo el pico y no el promedio. Este artículo ofrece un calendario de cuatro semanas, una prueba de carga repetible con k6, los ajustes de caché y de base de datos que conviene revisar y un plan de contingencia que escribir antes del pico. No se promete ninguna capacidad: el límite de su tienda lo da su propia medición.

Contenido· El pico es una fecha, y la preparación también1/14
  1. 01El pico es una fecha, y la preparación también
  2. 02Qué tumba una tienda durante el pico
  3. 03Congelar los cambios: cuatro semanas, una fecha de corte
  4. 04Calendario de preparación para repetir cada año
  5. 05Medir sobre una copia con k6 y ab
  6. 06Leer el resultado: el pico, no el promedio
  7. 07Síntomas durante la prueba y pistas a seguir
  8. 08Caché: lo que se sirve rápido y lo que nunca debe cachearse
  9. 09Base de datos y caché de objetos
  10. 10Cargue solo lo que le pertenece
  11. 11Dimensionar: una hipótesis que validar con la medición
  12. 12Si no hace usted mismo esta prueba
  13. 13El plan de contingencia, una línea por decisión
  14. 14Después del pico: conservar la medición para el año próximo

El pico es una fecha, y la preparación también

El Black Friday cae el día después de Thanksgiving, que la ley federal de Estados Unidos fija en el cuarto jueves de noviembre. En 2026 eso da el jueves 26 de noviembre para Thanksgiving, el viernes 27 de noviembre para el Black Friday y el lunes 30 de noviembre para el Cyber Monday. Estas fechas se calculan a partir de esa regla: contrástelas con el calendario comercial de su mercado, que puede adelantar o alargar sus propias campañas.

Quedan cuatro semanas en la fecha de este artículo. Es suficiente para congelar, medir y corregir, no para reconstruirlo todo. El objetivo no es tener el servidor más grande posible, sino conocer el límite del suyo antes de que el tráfico lo encuentre por usted, y decidir de antemano qué hará si se alcanza.

Qué tumba una tienda durante el pico

  • Una caché que solo sirve a visitantes anónimos — en cuanto hay una cookie de carrito o de sesión, PHP y la base de datos recalculan la página en cada solicitud.
  • Consultas SQL tolerables con poco tráfico — una consulta lenta no molesta a nadie con cinco visitantes. Con doscientos a la vez, retiene conexiones y hace esperar a todas las siguientes.
  • Demasiados procesos PHP para la memoria disponible — cada proceso consume RAM.
  • Un cambio de última hora — una extensión, un tema o un código promocional mal configurado subido el día anterior. Es la causa más evitable, y la congelación la elimina.
  • Un servicio de terceros llamado en cada página vista — un módulo de envío, de opiniones o de fidelización consultado de forma síncrona. Si se ralentiza, la tienda se ralentiza con él, aunque su servidor no tenga culpa.
  • Ninguna consigna escrita — nadie sabe quién decide desactivar una función, con qué umbral ni quién avisa al cliente. Se improvisa durante la caída, lo que la alarga.

Congelar los cambios: cuatro semanas, una fecha de corte

La congelación es la medida más barata y eficaz: mientras el código y la configuración no se muevan, lo que midió sigue siendo cierto. Elija una fecha de corte, por ejemplo el viernes 20 de noviembre, una semana antes del pico. Después, ninguna actualización del CMS, ninguna extensión nueva, ningún cambio de tema. Solo pasan las correcciones de errores críticos, probadas en la copia y anotadas en un registro.

La congelación no cubre las actualizaciones automáticas: desactívelas durante el periodo. La tabla siguiente se repite cada año desplazando las fechas.

Haga una copia de seguridad completa justo antes de la congelación (archivos, base de datos, configuración del servidor) y restáurela una vez en la copia cronometrando la operación: esa duración es un dato del plan de contingencia. La diferencia entre instantánea y copia de seguridad se explica en snapshot o copia de seguridad de un VPS.

Calendario de preparación para repetir cada año

Desplace la tabla

PeriodoQué se hacePrueba esperada
Hasta el 6 de noviembreInventario: versión del CMS, extensiones, servicios de terceros, tareas programadas, plan de alojamientoUna tabla fechada, con una persona responsable por línea
Del 9 al 13 de noviembreCopia de la tienda y prueba de carga de referenciaResultado conservado con el comando exacto y el escenario
Del 16 al 19 de noviembreAjustes de caché, base de datos y PHP, y nueva pruebaMismo escenario, mismos parámetros, resultados comparados
Viernes 20 de noviembreCongelación de cambios, copia de seguridad completaRestauración probada, no solo copia realizada
Del 21 al 26 de noviembreSolo correcciones críticas, tras probarlas en la copiaRegistro de cambios al día
Del 27 al 30 de noviembreVigilancia del pico, plan de contingencia listo para usarAlertas activas y una persona de guardia designada

Medir sobre una copia con k6 y ab

  1. Preparar una copia de la tienda

    No pruebe nunca la tienda en producción: una prueba de carga puede tumbarla, ensuciar sus estadísticas y crear pedidos falsos. Restaure una copia de seguridad en un VPS o alojamiento de pruebas de la misma familia que producción, con la misma versión de PHP y la misma base de datos. Anonimice a los clientes, corte el envío de correos y ponga los módulos de pago en modo de prueba.

  2. Escribir el escenario antes de elegir la herramienta

    Liste el recorrido de un comprador: portada, página de categoría, página de producto, añadir al carrito, página del carrito y comienzo del proceso de compra. Decida el peso de cada paso, por ejemplo muchas páginas de producto y pocos pagos. Un escenario limitado a la portada mide la caché, no la tienda.

  3. Instalar k6

    k6 es la herramienta de pruebas de carga de código abierto de Grafana, un único binario. Siga la instalación descrita en la documentación oficial de k6 en la máquina que genera la carga, nunca en el servidor probado, y compruebe con k6 version.

  4. Escribir el script sobre una subida progresiva

    En un archivo charge.js, importe http desde k6/http y check desde k6. Declare un escenario con executor: 'ramping-arrival-rate' (documentación de k6): fija un número de iteraciones por segundo con independencia de la rapidez de respuesta del sitio, lo que se parece más a la llegada de visitantes que un número fijo de usuarios virtuales. Rellene startRate, timeUnit, preAllocatedVUs, maxVUs y unas stages que suban por escalones. En la función por defecto, encadene http.get sobre la página de producto y luego http.post sobre añadir al carrito, con un check sobre el código 200.

  5. Fijar umbrales que hagan fallar la prueba

    Añada thresholds a las opciones: http_req_failed: ['rate<0.01'] y http_req_duration: ['p(95)<800']. Los valores son suyos, según lo que toleren sus clientes, no una cifra copiada. Si un umbral no se cumple, k6 termina con un código de salida distinto de cero, lo que permite repetir la prueba en una rutina automática. Los check no tienen ese efecto: solo los umbrales hacen fallar la prueba.

  6. Lanzar la prueba y observar el servidor a la vez

    Ejecute k6 run -e BASE_URL=https://copia.your-domain.com charge.js. En una sesión SSH en el servidor probado, deje corriendo top o htop y vigile free -m para la memoria y el swap. Anote en qué escalón de la subida despegan los tiempos de respuesta y qué recurso se satura primero: procesador, memoria, conexiones a la base de datos o disco.

  7. Completar con una prueba rápida con ab

    ApacheBench comprueba una página concreta en una línea: ab -n 500 -c 20 -k https://copia.your-domain.com/producto/ejemplo/. La opción -n indica el total de solicitudes, -c las simultáneas y -k activa la conexión persistente. La documentación de Apache señala que la herramienta no implementa HTTP/1.x por completo: reserve su uso para comparar antes y después de un ajuste, no para medir una capacidad.

  8. Repetir la misma prueba tras cada ajuste

    Cambie una sola cosa cada vez: caché, número de procesos PHP, un índice de la base de datos. Vuelva a lanzar exactamente el mismo comando y guarde los resultados en un archivo fechado.

Leer el resultado: el pico, no el promedio

Un tiempo de respuesta medio oculta lo que vive el comprador con mala suerte. Lea el percentil 95, o el 99 para los casos más lentos, y la tasa de errores. Una tienda cuyo promedio sigue siendo correcto pero donde uno de cada veinte compradores espera varios segundos pierde carritos sin que el promedio lo indique.

Mire también la forma de la curva. Un tiempo estable seguido de una caída brusca indica un límite duro, como un número máximo de conexiones a la base de datos o de procesos PHP. Esta prueba no dice cuántos visitantes reales recibirá: dice a qué ritmo de llegadas su copia, en las condiciones de la prueba, empieza a degradarse.

Aquí no se publica ningún resultado numérico, y es deliberado: una cifra medida en una máquina de pruebas no dice nada de la suya, y el script anterior solo se ejecutó contra un destino ficticio para validar su sintaxis, lo que no demuestra ninguna capacidad. La única medición que cuenta es la que tome sobre su propia copia.

Síntomas durante la prueba y pistas a seguir

Desplace la tabla

Lo que observaCausa probableQué medir
Tiempo de respuesta que sube con la carga, procesador al máximoDemasiadas páginas calculadas por PHP en lugar de servirse desde la cachéProporción de páginas servidas desde la caché para visitantes anónimos
Memoria llena y luego uso de swapDemasiados procesos PHP para la RAM disponibleMemoria por proceso PHP y número de procesos permitidos
Errores 502 o 504 a ráfagasTodos los procesos PHP ocupados, o cola saturadaAjuste del pool PHP y duración de las solicitudes más lentas
Procesador tranquilo pero tiempo de respuesta altoEspera de la base de datos o de un servicio de tercerosRegistro de consultas lentas, duración de las llamadas externas
Error "too many connections"Límite de conexiones de la base de datos alcanzadoValor de `max_connections` y conexiones realmente usadas
Páginas de producto rápidas pero carrito lentoEl carrito evita la caché, como debe, y carga la base de datosConsultas que dispara el añadir al carrito

Caché: lo que se sirve rápido y lo que nunca debe cachearse

La documentación de WooCommerce es clara: las páginas de carrito, de pedido y de cuenta deben seguir siendo dinámicas, porque muestran información propia del cliente. Exclúyalas de toda caché, en el plugin, en el servidor y en la red de distribución, y compruebe las cookies de sesión y de carrito que usa su versión de WooCommerce. Una página de carrito cacheada por error muestra el carrito de otro comprador, algo peor que una caída.

Para el resto, haga la lista de lo que puede servirse tal cual: portada, categorías, fichas de producto para visitantes sin cookies. El detalle de las rutas que excluir en la red de distribución se trata en nuestra guía sobre Cloudflare y la caché de un sitio cliente. En PrestaShop, la documentación para desarrolladores recomienda activar la caché Smarty en la página de Rendimiento y no activar la sección Caché cuando MySQL o MariaDB se ejecuta en la misma máquina. Compruebe estos ajustes en el back office de su versión y repita la prueba tras cada cambio.

Base de datos y caché de objetos

Active el registro de consultas lentas de MariaDB antes de la prueba: SET GLOBAL slow_query_log=1; y luego SET GLOBAL long_query_time=1; para un umbral de un segundo, valor que debe ajustar. Estos ajustes en caliente desaparecen al reiniciar; para conservarlos, póngalos en la configuración. A partir de MariaDB 10.11, las variables se renombran con el prefijo log_slow_, así que compruebe el nombre de su versión.

Una caché de objetos como Redis alivia la base de datos al guardar en memoria los resultados repetidos. Póngale un límite con maxmemory y elija la política de expulsión con maxmemory-policy: la documentación de Redis indica que allkeys-lru es una buena opción por defecto cuando una parte de las claves se lee mucho más que el resto, mientras que noeviction devuelve un error cuando la memoria está llena. Vigile keyspace_hits y keyspace_misses en INFO stats durante la prueba: una tasa de aciertos baja indica una caché que no sirve de nada.

Cargue solo lo que le pertenece

Dirija la prueba a su copia, nunca a la pasarela de pago, a un servicio de envío ni a una API de terceros: la herramienta los sobrecargaría y podrían bloquear su cuenta. Si su escenario debe pasar por el pago, use el modo de prueba del proveedor, con su acuerdo.

Dimensionar: una hipótesis que validar con la medición

Si la prueba revela que la copia se satura demasiado pronto, hay dos vías: corregir el software o cambiar de plan. Si la máquina sigue siendo el factor limitante, aumente la memoria o los núcleos por escalones y repita la misma prueba tras cada uno, hasta que la curva aguante con un margen que considere suficiente.

Una recomendación de recursos leída en una web, incluida esta, sigue siendo una hipótesis: solo cuenta su medición sobre su tienda. El método para leer el consumo está detallado en dimensionar un VPS para el sitio de un cliente. Cuando una máquina ya no basta, HAProxy en un VPS reparte la carga, a costa de una arquitectura más compleja.

Si no hace usted mismo esta prueba

Muchos comerciantes confían la tienda a una agencia o a un proveedor de alojamiento. La prueba sigue siendo necesaria: hay que pedirla. Exija tres cosas por escrito antes de la fecha de congelación: el resultado fechado de una prueba de carga sobre una copia, con el escenario y el tiempo de respuesta en el percentil 95 leído en el pico; la lista de cambios previstos y la fecha de congelación acordada; un plan de contingencia firmado, que nombre a la persona autorizada a desactivar funciones o a restaurar la copia de seguridad. Un informe que solo cita el promedio, o un «todo está listo» sin resultado, no responde a la petición.

Decida también con ellos quién zanja el día D: el plan de contingencia cuesta funciones, es decir ventas, y esa decisión corresponde al negocio, no solo al proveedor técnico.

El plan de contingencia, una línea por decisión

  • Quién decide — una persona designada, con suplente, autorizada a activar el plan sin consultar a un comité.
  • Con qué umbral — por ejemplo una tasa de errores o un tiempo de respuesta que definió durante las pruebas, leído por la monitorización y no a ojo.
  • Acción de descarga — desactivar las funciones no esenciales: recomendaciones de productos, opiniones, búsqueda predictiva, extensiones pesadas probadas una a una durante el ensayo.
  • Segunda acción — activar una página clara de cola o de mantenimiento con la hora prevista de vuelta, en lugar de un error en bruto.
  • Último recurso — restaurar la copia anterior a la congelación, con el tiempo de restauración medido y el acuerdo de quien decide.
  • Quién avisa — al cliente, al equipo de marketing que impulsa la campaña y a su proveedor de alojamiento, con un mensaje ya redactado.

Después del pico: conservar la medición para el año próximo

Conserve el script, el comando, los resultados y el registro de cambios en una carpeta fechada. El año próximo repetirá la misma prueba sobre la nueva versión de la tienda, y la comparación mostrará si las extensiones añadidas durante el año han encarecido el recorrido.

Para seguir la disponibilidad de las tiendas durante el periodo, consulte el informe de disponibilidad de los sitios cliente.

Un pico de ventas merece un servidor cuyo límite usted conozca

Alojamiento y VPS en el mismo lugar que su dominio, copias de seguridad según el plan, migración desde su proveedor actual. Su tienda sigue siendo suya. Planes desde 199 DH/año para el alojamiento y 99 DH/mes para un VPS.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva