Minha instância tem um tráfego bem baixo, tipo <1000 visualizações de página diárias (excluindo crawlers).
No entanto, apenas abrindo a página inicial do fórum e sem fazer nada, recebo pelo menos uma resposta 429, às vezes 2 ou 3, e isso é antes de clicar em qualquer coisa.
Pesquisando aqui no meta, o único tópico que encontrei é de alto volume e não deve explicar o que está acontecendo aqui.
Minha instância usa o instalador oficial, mas com uma configuração de subpasta. Pensei que poderia haver alguma má configuração em relação aos IPs reais dos usuários do meu proxy reverso para o NGINX, mas, pelo que pude apurar, os IPs estão sendo relatados corretamente (posso investigar isso mais a fundo se ainda for uma causa candidata a este problema).
Eu não estaria muito preocupado com isso, mas às vezes enfrento um problema no chat onde, ao editar uma mensagem de chat, não vejo o conteúdo atualizado imediatamente e me pergunto se está relacionado aos 429s.
Agradeço qualquer orientação sobre como diagnosticar isso, qualquer sugestão é bem-vinda!
Olá Stephen, obrigado por dedicar seu tempo para responder!
Eu analisei os IPs relatados em contas de usuário ativas e todos parecem estar corretos – incluindo o meu. Os IPs de outras pessoas são diferentes entre si e todos vêm de lugares diferentes do meu país (Brasil), o que é esperado. Eu estava considerando investigar no banco de dados e nos logs, mas não o fiz por causa deste teste indicando que pode não ser o problema.
Eu não estou usando o CloudFlare como proxy, mas já usei no passado – verifiquei novamente que o templates/cloudflare.template.yml está comentado.
Agora, olhando meu app.yml, vejo que templates/web.ratelimited.template.yml também está comentado… Fico pensando se faz sentido incluí-lo para evitar ser limitado por taxa? Isso não faz sentido, certo?
O corpo da resposta 429 é “Você realizou esta ação muitas vezes. Por favor, aguarde 2 minutos antes de tentar novamente.”
Ainda estou recebendo esses, entendo agora que é o Discourse que está agindo sobre isso, não o Nginx, então tentei definir DISCOURSE_REJECT_MESSAGE_BUS_SECONDS: 0.2 (o padrão é 0.1) como vi em outro tópico sobre o message bus 429’ing, mas nada mudou. Agradeço se alguém puder me indicar variáveis de ambiente que possam afrouxar esse limite.
Eu não estaria muito preocupado com nenhum desses problemas, o problema real aqui é que as mensagens de chat não estão aparecendo a menos que eu atualize ou mude de canal: se eu mudar de um chat pessoal para outro e depois voltar, só então poderei ver novas mensagens.
Como acabamos de conversar, isso é causado pelo enfileiramento de requisições do Unicorn, @renato ajustará o número de Unicorns e relatará suas descobertas.
Agora isso é muito ruim. O que deveria acontecer é que, após o período de backoff, o chat se recuperará automaticamente e buscará todas as mensagens desde a última consulta funcionando. Você não vê isso? Se sim, esse é um bug desagradável.
Sim, eu não experimentei isso, isso pode ser outra coisa, não tenho certeza. Eu consigo ver o ponto verde indicando que há uma nova mensagem, mas a mensagem em si não aparece, então quando mudo de canal eu consigo ver as novas mensagens e o ponto de notificação verde desaparece.
Estou reconstruindo agora com workers adicionais e testarei mais, se isso continuar acontecendo, tentarei coletar o máximo de detalhes possível e voltarei com informações.
@Falco Reportando de volta, ainda consigo ver 429s nas abas de console e redes.
Também consigo reproduzir o problema da janela de chat não atualizar, mesmo conversando comigo mesmo: se eu enviar uma mensagem, ela aparece, mas os controles de hover não aparecem, então se eu mudar para outro chat e voltar, posso editar a mensagem que enviei, mas tenho que sair/retornar para vê-la atualizada.
Estou fazendo um grande refatoramento de muitas coisas de rede/atualização ao vivo no momento, espero mesclar isso na próxima semana, o que pode melhorar muito seu problema (a menos que seja outra coisa totalmente não relacionada).
Acho que temos o mesmo problema. Muitos usuários de chat altamente engajados relatam que não estão vendo as mensagens enviadas por outros, apenas as suas próprias até que atualizem. Existe alguma solução para isso, seja no front-end através do painel ou via SSH?