Avantages du plugin who's online ?

Les forums Maker comptent une large base d’utilisateurs, mais il y a rarement suffisamment d’utilisateurs connectés simultanément pour saturer l’affichage des avatars « Qui est en ligne ». Nous avons constaté que le plugin « Qui est en ligne » était responsable d’une performance médiocre, allant jusqu’à provoquer des délais d’attente sur les requêtes, même avec seulement quelques utilisateurs connectés. Nous utilisons une configuration nginx externe avec une page hors ligne et, en raison de ces requêtes ayant expiré, nous affichions périodiquement la page de maintenance alors qu’aucune maintenance n’était en cours.

Nous servons désormais les images localement après avoir migré depuis Digital Ocean Spaces, ce qui crée une concurrence pour les workers Unicorn. Cependant, nous exécutons tout sur une VM avec 2 CPU et 4 Go de RAM, et notre base de données est relativement volumineuse (environ 400 000 messages, base de données de 6 Go), nous n’avons donc pas la place d’ajouter simplement beaucoup plus de workers Unicorn à 500 Mo chacun. Je soupçonne que si nous utilisions un stockage objet pour les images, l’impact global serait moindre en raison d’une concurrence réduite pour les workers Unicorn, mais cela ne prendrait pas grand-chose pour que l’impact reste significatif, étant donné que nous observons actuellement cet impact avec seulement deux utilisateurs connectés.

Mise à jour : La modification de la zone de limitation de débit flood de 12 req/s à 36 req/s, et de burst de 12 à 36, a au moins réduit l’impact de « Qui est en ligne ». Nous testons actuellement cette configuration.

Nouvelle mise à jour : avec le taux de flood triplé, nous n’avons reçu aucun rapport de problème.

J’utilise nginx externe et j’ai appliqué la limitation de débit à nginx externe, en utilisant le modèle ratelimited comme point de départ, mais j’utilise désormais la limitation de débit dans nginx interne, car nginx externe ne connaît pas quelles routes sont statiques et applique donc la limitation de débit aux routes statiques ainsi qu’aux routes dynamiques, ce qui, lorsque je l’ai fait, a provoqué de nombreuses échecs/reprises lors du chargement des ressources statiques. Notez que c’est une raison pour exécuter nginx externe ; sinon, je pense que tout le trafic IPv6 est attribué à l’adresse IP Docker et est limité en débit comme s’il provenait d’une seule adresse IP.

4 « J'aime »