Benefícios do plugin who's online?

O Maker Forums possui uma grande base de usuários, mas raramente tem usuários simultaneamente online suficientes para colapsar a exibição de avatares de Quem Está Online. Descobrimos que o plugin Quem Está Online era responsável por desempenho lento, a ponto de causar tempo limite em solicitações, mesmo com apenas alguns usuários online. Usamos uma configuração externa do nginx com uma página offline e, como resultado desses tempos limite, exibíamos periodicamente a página de manutenção mesmo quando não havia nenhuma manutenção em andamento.

Servimos imagens localmente após migrar do Digital Ocean Spaces, o que gera competição pelos workers do Unicorn. No entanto, estamos executando tudo em uma VM com 2 CPUs e 4 GB de RAM, e temos um banco de dados relativamente grande (cerca de 400 mil posts, banco de dados de 6 GB), então não temos espaço para simplesmente adicionar muitos workers do Unicorn a meio gigabyte cada. Suspeito que, se usássemos armazenamento de objetos para as imagens, o impacto geral seria menor devido à menor competição pelos workers do Unicorn, mas não levaria muito para que ainda fosse significativo, já que observamos esse impacto atualmente com apenas dois usuários online.

Atualização: Modificar a zona de limitação de taxa flood de 12r/s para 36r/s e o burst de 12 para 36, pelo menos reduziu o impacto do Quem Está Online. Estamos testando essa configuração agora.

Nova atualização: com a taxa de inundação triplicada, não recebemos mais relatos de problemas.

Estou usando nginx externo e apliquei a limitação de taxa ao nginx externo, usando o modelo com limitação de taxa como ponto de partida, mas estou usando limitação de taxa no nginx interno, porque o nginx externo não sabe quais rotas são estáticas e, portanto, aplica a limitação de taxa tanto a rotas estáticas quanto dinâmicas, o que, quando fiz, causou muitas falhas/retries ao carregar ativos estáticos. Note que isso é uma razão para executar o nginx externo; caso contrário, acredito que todo o tráfego IPv6 seja atribuído ao endereço IP do Docker e seja limitado em taxa como se fosse um único endereço IP.

4 curtidas