¿Beneficios del plugin who's online?

Los Foros de Maker tienen una gran base de usuarios, pero rara vez hay suficientes usuarios simultáneamente en línea para colapsar la visualización de avatares de ‘Quién está en línea’. Descubrimos que el complemento ‘Quién está en línea’ era responsable de un rendimiento lento, hasta el punto de provocar la expiración de las solicitudes, incluso con solo un par de usuarios conectados. Utilizamos una configuración externa de nginx con una página sin conexión y, como resultado de esas solicitudes que agotaban el tiempo de espera, mostrábamos periódicamente la página de mantenimiento cuando no se estaba realizando ningún mantenimiento.

Servimos las imágenes localmente después de migrar desde Digital Ocean Spaces, lo que genera competencia por los trabajadores de Unicorn. Sin embargo, estamos ejecutando todo en una VM de 2 CPU y 4 GB de RAM, y tenemos una base de datos relativamente grande (aproximadamente 400 mil publicaciones, base de datos de 6 GB), por lo que no tenemos espacio para agregar simplemente muchos más trabajadores de Unicorn, cada uno consumiendo medio gigabyte. Sospecho que si utilizáramos almacenamiento de objetos para las imágenes, el impacto general sería menor debido a la menor competencia por los trabajadores de Unicorn, pero no se necesitaría mucho para que siga siendo significativo, dado que ya observamos este impacto actualmente con solo dos usuarios en línea.

Actualización: Modificar la zona de limitación de velocidad flood de 12r/s a 36r/s, y burst de 12 a 36, ha reducido al menos el impacto de ‘Quién está en línea’. Estamos probando esta configuración ahora.

Nueva actualización: con la tasa de inundación triplicada, no hemos recibido informes de problemas hasta ahora.

Estoy utilizando nginx externo y he aplicado la limitación de velocidad al nginx externo, utilizando la plantilla de limitación de velocidad como punto de partida, pero estoy aplicando la limitación de velocidad en el nginx interno, porque el nginx externo no sabe qué rutas son estáticas y, por lo tanto, aplica la limitación de velocidad tanto a las rutas estáticas como a las dinámicas, lo que cuando lo hice provocó muchos fallos/reintentos al cargar recursos estáticos. Tenga en cuenta que esta es una razón para ejecutar nginx externo; de lo contrario, creo que todo el tráfico IPv6 se atribuye a la dirección IP de Docker y se limita en velocidad como si fuera una única dirección IP.

4 Me gusta