Desde ontem à noite o site está respondendo muito mal

Peço desculpas antecipadas se esta for a categoria, localização, etc. errada.

Tenho um site Discourse rodando há cerca de 6 meses em um VPS da DigitalOcean, sem muitos problemas. A página de administração indica que estou na versão 2.5.0.beta4. Desde ontem à noite, a maior parte do conteúdo das páginas do site ou se recusa a carregar ou leva um tempo aparentemente desnecessário. Por exemplo, consigo navegar para páginas como a página inicial ou /admin, mas qualquer conteúdo real delas (postagens, gráficos de administração ou outras abas) não parece carregar. Verifiquei as métricas do sistema e o uso de CPU fica em torno de 2% em ocioso, e há tráfego mínimo ou uso de disco. A base de usuários é de talvez 10 pessoas, já que estou apenas testando/configurando o site. Considerando isso, esse comportamento parece muito estranho.

Os únicos plugins que tenho, de acordo com o app.yml, são docker_manager e discourse-signatures. Sou o único usuário administrador, então posso confirmar que nenhuma alteração foi feita nas configurações do site há bastante tempo.

Minha primeira ideia foi reiniciar a própria máquina, e também tentei atualizar manualmente usando git pull e ./launcher rebuild app. Não tenho certeza do que procurar durante esse processo que indicaria se algum erro está ocorrendo, mas a reconstrução parece ser concluída e o site pode ser acessado novamente depois, mas continua na versão 2.5.0.beta4. Da mesma forma, tentar acessar a página /admin/update eventualmente apenas dá timeout. Tudo isso parece bastante estranho porque o site é, argumentavelmente, “funcional” — simplesmente não sei o suficiente sobre como ele opera para realmente diagnosticar qualquer coisa. Encontrei e posso executar o discourse-doctor, mas não tenho certeza do que ele accomplishes — envia e-mails com sucesso, etc.

A única coisa que pode parecer indicar um problema é que, ontem à noite, recebi um e-mail do fórum sobre uma resposta a uma postagem e, quando navego para a categoria “últimas postagens” (depois que ela finalmente carrega), não parece haver nenhuma indicação de que a postagem existe, porque a visão geral do tópico em “últimas” não lista que aquele usuário publicou por último. Não consigo carregar o conteúdo de nenhuma postagem, então não há como verificar com certeza. Então, pode haver algum erro ou incompatibilidade no banco de dados? Não tenho certeza de como algo assim se espalharia para causar falhas no carregamento de grandes partes do site, ou se isso é um beco sem saída que vale a pena perseguir.

Alguma ideia de por onde começar a solucionar um problema como este? Muito obrigado se você dedicou tempo para ler : )

Olá tuckie! Bem-vindo!

Parece que você está fazendo tudo certo.

Recomendo fortemente que você atualize, se possível — você está bastante atrasado em relação à versão mais recente. Mas lembre-se de fazer um backup antes para não perder nada.

Você consegue fazer login via SSH e verificar se está sem espaço de armazenamento?

df -h

Seja qual for o caso, o armazenamento é uma boa primeira coisa a verificar, e este comando é útil para remover qualquer contêiner antigo que esteja ocupando espaço:

./launcher cleanup app

Depois, tente reconstruir o aplicativo para a versão mais recente. Avise-nos se funcionar desta vez e se não houver erros exibidos no console.

./launcher rebuild app

Obrigado pela rápida resposta.
Está mostrando cerca de 7,9 GB livres na unidade montada em /dev/vda1, montada em /. Não tenho grande conhecimento sobre como as outras partições são usadas no Ubuntu ou como elas podem afetar a execução (o Discourse está em um container, certo?). O restante parece ser a partição de boot, etc. Existem apenas cerca de 30 a 40 postagens no total no fórum, pois estou testando, então não parece estar em risco por esse motivo. A limpeza conseguiu liberar cerca de 4 GB extras.

Quanto à reconstrução do aplicativo, já executei isso algumas vezes na verdade. Não vejo nenhuma mensagem de erro ou aviso gritante ocorrendo durante o processo, mas, ao mesmo tempo, quando termina, não vejo nada indicando ‘sucesso’ também — não saberia quais linhas de erro ou aviso procurar. Ele remove o container antigo e depois executa o container Docker, e pronto. Acabei de executá-lo mais uma vez, e ao acessar o site, ele ainda informa que há atualizações disponíveis, mas demora incrivelmente muito para informar a versão em que estou (ainda 2.5.0.beta4) e a versão para a qual atualizar.

Parte do problema é que parece que não consigo realmente usar as ferramentas de administração também, devido aos tempos de resposta ou falhas no carregamento. Por exemplo, navegar até a aba de backups apenas exibe a animação de carregamento indefinidamente. Por curiosidade, abri o console na aba de backups, e o navegador parece tentar buscar arquivos JavaScript e está falhando em todos eles, lentamente, um de cada vez.

Se houver uma maneira de trabalhar com backups via SSH, isso pareceria útil aqui.

Parece ser um problema de rede. Você está usando o Cloudflare? (se sim, desative a nuvem laranja).

Você pode ter um vizinho barulhento no DigitalOcean, então talvez seja necessário abrir um chamado com eles.

Não faz sentido você dizer que fez uma reconstrução, mas a versão não mudou. Eu pensaria que você precisaria fazer a atualização do PostgreSQL 12. Você não viu nada sobre isso ao fazer a reconstrução?

Estou no DigitalOcean. Suponho que algo assim possa estar acontecendo, embora não tenha certeza se isso causaria esse problema de forma tão consistente ou por tanto tempo. Acredito que uma maneira melhor de descrever o problema com o site é que, geralmente, a página consegue carregar o modelo ou a ‘estrutura’ da página, mas além disso, buscar qualquer conteúdo real para as páginas parece ficar carregando para sempre.

Quanto à reconstrução/mudança de versão, pode ser que um erro assim esteja ocorrendo, mas não conheço uma boa maneira de analisá-lo, nem sei exatamente o que procurar. Vi uma linha dizendo algo como ‘postgres instalado’ enquanto a saída passava rapidamente ao executar a reconstrução novamente agora. Não tenho certeza se isso se deve ao trabalho sendo feito dentro de um contêiner ou não, mas, por exemplo, ./launcher rebuild app | grep 'postgres' não parece filtrar nada, nem ./launcher rebuild app > output.txt && grep 'postgres' output.txt. O arquivo output.txt contém informações, mas aparentemente não tudo? Pelo menos, ele não termina da mesma forma que a saída real do console.

Olá, espero que não esteja infringindo nenhuma regra sobre bumps, etc., mas ainda gostaria de ajuda com isso. Na semana passada, as coisas parecem ter piorado? Não consigo afirmar com certeza quando isso aconteceu, pois não trabalhei nisso durante as férias da semana passada, mas agora não consigo conectar ao meu site de forma alguma. Ainda consigo fazer ping no IP com sucesso, e o mesmo IP redireciona para o domínio correto, então parece que não é um problema de nameserver.

Ao acessar o site pelo Firefox agora, aparece:

O site em https://aregames.art/ apresentou uma violação de protocolo de rede que não pode ser reparada.

A página que você está tentando visualizar não pode ser exibida porque foi detectado um erro na transmissão de dados.

Não consigo encontrar muitas informações úteis no inspeção do navegador, pois parece que não há resposta para a solicitação GET.

Desde que descobri esse novo problema, eu:

  • executei o rebuild várias vezes;
  • atualizei o Ubuntu para a versão 20.04;
  • executei o rebuild novamente.

O site em si foi usado apenas para testar a plataforma por cerca de um mês, e estou disposto a aceitar que provavelmente não foi uma boa ideia não manter o software atualizado. Estou disposto a reinstalar o Discourse do zero, se necessário. Seria ótimo, claro, encontrar uma maneira de corrigir isso preservando a configuração do site, os usuários e as postagens, mas a única coisa que realmente preciso manter é parte do CSS personalizado que escrevi no editor de temas. Se houver algum local onde isso seja armazenado e eu possa copiar para uma nova configuração, isso seria muito útil. Eu (de forma irresponsável) não tenho uma versão atualizada dele armazenada localmente em lugar nenhum.

E, novamente, sobre o processo de rebuild, ainda não sei exatamente como analisá-lo para identificar problemas. Pelo que posso ver, ele é executado e concluído sem solicitar nenhuma entrada, e as últimas linhas após a conclusão referem-se à inicialização do contêiner Docker com as configurações do arquivo YAML. Entendo que há uma diferença entre o rebuild ser concluído e ser concluído com sucesso, mas não tenho certeza do que devo procurar ou onde diagnosticar se algo está dando errado durante esse processo.

O servidor está no ar? Você consegue fazer SSH nele?

Se sim, reinicie o servidor e depois reconstrua o Discourse.

Se ele não estiver no ar após tudo isso, cole a saída da reconstrução aqui para que possamos ajudar.

Sim, consigo acessar via SSH corretamente e foi assim que executei o rebuild cada vez. E não, continua inacessível após um rebuild. Mesmo após o rebuild, vejo que o ifconfig mostra o container Docker com um IP diferente do IP do servidor, ao qual não consigo acessar pelo navegador da web do meu sistema. Não tenho certeza se isso é intencional ou não. O comando ./launcher rebuild app > output.txt parece gerar apenas uma parte da saída real do console, mas posso incluí-la também.

Ubuntu Pastebin (arquivo de saída curto)
Ubuntu Pastebin (saída completa colada do terminal)
Vejo algumas mensagens de erro do postgres dizendo que o banco de dados ‘discourse’ já existe. Vale a pena investigar isso?

Seu DNS está correto?

host aregames.art 
aregames.art has address 198.54.117.200
aregames.art has address 198.54.117.199
aregames.art has address 198.54.117.198
aregames.art has address 198.54.117.197

Por que tantos IPs? Qual é o IP do seu servidor?

Uau, isso foi realmente esclarecedor — eu havia deixado meu nome de domínio expirar, e, coincidentemente, isso aconteceu no mesmo dia em que comecei a enfrentar esses problemas… Eu planejava trocar de provedor, então desativei os pagamentos automáticos lá e a data passou, imagino. Então, parece que esses IPs estão relacionados a algum tipo de serviço de estacionamento para o domínio. Acabei de renovar, então talvez ele reaplique os registros corretos novamente — não sei quanto tempo isso costuma levar, o host ainda está relatando esses IPs. De acordo com a documentação, eu não deveria conseguir conectar diretamente via IP, então, supostamente, não vou conseguir testar se isso funcionou por um tempo. Obrigado por apontar isso.

Dito isso, ainda estou um pouco confuso sobre os problemas que enfrentei inicialmente — Será que eu estava acessando uma versão em cache da página e, por causa dos problemas com os servidores de nomes, as solicitações de conteúdo não estavam sendo processadas? Algumas coisas, como até mesmo as postagens em um tópico ou a lista de postagens ao abrir ‘últimas postagens’, acabavam carregando, só que após muito tempo.

atualização: host aregames.art, como você mencionou acima, parece ter resolvido novamente para o IP e servidor de e-mail corretos. Consegui confirmar com o script de configuração do Discourse que ele aceita o DNS apontando para o IP. Parece que o script de configuração também executou a reconstrução. No entanto, ao navegar para a URL, aparece um erro de servidor não encontrado. Acessar o IP diretamente na porta 443 gera um erro 400 do Nginx, o que, de certa forma, parece um progresso.

edição novamente: precisei limpar o cache do meu navegador — o site carregou perfeitamente em uma aba anônima. As coisas parecem estar funcionando novamente! Suponho… Pagar pelo meu site foi a solução para corrigi-lo aqui.

Sim, você estava usando a visualização em cache.

Adicionamos um novo recurso no Discourse 2.6 para incluir uma classe CSS específica no documento quando você estiver nessa visualização, mas ainda não temos um elemento de interface padrão para isso.

Você pode ler mais sobre isso em Offline Indicator