Muitos erros HTTP 502 e 429 após atualizar para 3.4.0.beta1-dev

Versão do Discourse: 3.4.0.beta1-dev (bf3d8a0a94)

Atualizado ontem e tive que desativar a minificação do Cloudflare, como sugerido aqui:

No entanto, desde então, muitos usuários (incluindo eu) experimentaram vários casos de 502 (Bad Gateway) e 529 (Too Many Requests).

Em uma tentativa de aliviar o problema, segui este guia também:

No entanto, nada parece ter mudado em termos de frequência desses erros.

A atualização ocorreu ontem por volta das 11h. Realizei uma reconstrução completa porque também queria desativar um plugin.

Tenho uma instância Prometheus+Grafana que monitora o servidor e o discourse, mas o servidor parece estar bem em termos de carregamento:

Métricas do Discourse (a queda nas métricas por volta das 11h de ontem é a reconstrução que derrubou o contêiner):

Novamente, não vejo nenhum padrão estranho.

No entanto, este é o console do navegador há um minuto, depois de tentar enviar uma mensagem privada para um usuário:

Se houver mais alguma coisa que eu possa fornecer (logs de qualquer tipo), por favor, me diga. Obrigado.

Ah, se ajudar, também há muitas operações em tempo real de “segundo plano” que estão claramente atrasadas.

Tópicos já lidos não são registrados como lidos, por exemplo.

Só para ter certeza, você fez esta etapa também, e então reconstruiu, correto?

1 curtida

Sim, desculpe, esqueci de adicionar que eu já havia adicionado o template do Cloudflare ao arquivo app.yml há muito tempo. Sempre estivemos atrás do Cloudflare, desde o primeiro dia.

Esta é uma parte do app.yml, temos nossos próprios certificados renovados independentemente, é por isso que o do letsencrypt está comentado:

## este é o template do container Docker do Discourse, autônomo e completo
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA *MUITO* CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar o Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

## quais portas TCP/IP este container deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
  - "80:80"   # http
  - "443:443" # https

[...]

Trecho de /logs

Vejo que isso foi movido para Installation, apenas para esclarecer, esta não é uma nova instalação.

Esta instância do Discourse está em execução desde março de 2023 e nunca teve esse problema específico.

Houve um problema no passado com alguns 529, mas ele foi resolvido desde então.

Eu acho que ainda se encaixa em

4 curtidas

Parece que seu PostgreSQL está sobrecarregado. Parece que a maior parte da sua RAM está ociosa, eu tentaria ajustar o banco de dados para usá-la e ver como as coisas se saem depois disso.

1 curtida

Como é /sidekiq/queues?
De qual versão você estava atualizando?

1 curtida

Da versão estável mais recente de 6 de maio, v3.2.1 para a mais recente test-passed.

Filas do Sidekiq:

A seção de trabalhos mortos (Dead job) é esta, mas parece ser o mesmo trabalho desde o início dos tempos.

Entradas mais antigas:

Os que estão em retentativa (retry) parecem ser o mesmo trabalho sendo retentado repetidamente.

Mas… por que de repente? Depois de apenas uma atualização da camada de aplicação?

Estou usando o plugin discourse prometheus exporter.
Se eu adicionasse um exportador postgresql como outro contêiner na VM, seria possível permitir que ele acessasse as métricas na instalação do postgresql do discourse?

Alguma direção mais precisa sobre como ajustar o banco de dados para o Discourse?

Não tenho certeza se está relacionado, mas certamente começou a acontecer após a atualização, clicar no botão dispensar na aba de não lidas sempre retorna um 503.

Bem, como parece não haver uma solução, tentarei voltar para a versão stable mais recente, pois ela deveria ser… você sabe, estável.

Cruzo os dedos para que não haja uma dependência principal que quebre o processo de compilação, como da última vez.

Você não pode voltar de testes-passados para stable, a menos que haja uma versão stable mais alta disponível. Então, a próxima oportunidade para você é quando 3.4.0 for lançado, imagino que seja por volta do Natal ou depois…

Além disso, você terá que aguentar o tranco um dia.

1 curtida

Bem, eu acabei de fazer. Parece estar funcionando. De qualquer forma, não nos importamos com nenhum dos recursos do 3.3.0.

Vou ver se ainda há problemas. O pior que pode acontecer é continuarmos recebendo uma enxurrada de 429 e 502, não é uma grande mudança.

Agradeceria orientações sobre como configurar o Postgres no Discourse para que ele tenha mais recursos disponíveis, no entanto.

Editar: Implantei a versão 3.2.5. O sistema parece estável.

Por favor, lembre-nos que você fez isso quando estiver postando seu próximo problema :wink:

1 curtida

Eu sempre menciono a versão em que estou ao relatar um problema.
Acho importante lembrar que, justamente por ser um software de código aberto, questões críticas devem ser consideradas em vez de escrever coisas como:

Este é mais um exemplo de pessoas se esforçando e mudando para a versão “estável”, encontrando alguns bugs que passam despercebidos porque não é a versão implantada mais popular.

Quando estável deveria significar “estável”, não “legado”.
O fato de dependências principais como o discourse docker serem lançadas sem um sistema de tags deveria ser suficiente para ser um pouco mais humilde ao responder aos usuários que estão relatando um problema.

Eu estava falando sobre mencionar o fato de que você fez downgrade quando tecnicamente não podia.

Eu acho importante lembrar… que eu não trabalho para o Discourse e estou te ajudando no meu próprio tempo, então eu não aprecio seu tom, nem sou capaz de fazer algo com seu feedback.

2 curtidas

2 curtidas