Nos Logs de Erro, estou recebendo intermitentemente os seguintes erros. Isso deixa o site inacessível por 15 a 30 segundos até que ele volte.
Mensagem de Erro de Info:
PG::ConnectionBad (FATAL: o sistema de banco de dados está no modo de recuperação) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
Uma coisa realmente estranha que notei ao analisar esses logs é que parece que o sistema está procurando pela pasta em /var/www/…, mas essa pasta não existe no servidor. Ela deveria existir? Qualquer ajuda é apreciada.
Se o banco de dados estiver corrompido, o site necessariamente estará quebrado. Você precisa descobrir o motivo. As razões mais comuns são falta de RAM e espaço em disco. Minha suposição é que seja RAM. Quanto de RAM você tem? Qual é a saída do comando free -h?
Esse é o caminho dentro do contêiner. Se você executar ./launcher enter app, verá que ela está lá.
Bem, você tem 646 MB disponíveis, e 4 GB é suficiente para que o swap geralmente não seja recomendado. Qual é o tamanho do seu banco de dados? Qual é o volume de tráfego? Há algo além do Discourse rodando no servidor?
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
A saída resultante foi 4650 MB (1 linha).
Quanto ao tráfego:
Tivemos 1.200 visualizações de página ontem e 12.400 na última semana. Aproximadamente 160 usuários na última semana e cerca de 80 usuários simultâneos a qualquer momento.
Você é o cara. A swap de 1 GB parece ter resolvido todos os problemas de travamento. Estou sinceramente feliz que tenha sido um problema de RAM e não de banco de dados. Vou aumentar a quantidade de RAM no servidor neste fim de semana. Muito obrigado a todos que ajudaram neste tópico!
Honestamente, não tenho certeza. Antes disso, fizemos uma reconstrução e reinicialização do servidor após mudar o hardware algum tempo atrás. Acredito que, após uma reinicialização, qualquer alteração no sistema teria sido detectada pelo Discourse.
Depois de instalar o arquivo de swap, houve momentos em que mais de 4 GB de “memória” estavam sendo usados, então parece que esse foi definitivamente o problema durante nossos períodos de maior atividade, que coincidem com os momentos em que o servidor travou. Fizemos uma atualização hoje e o site está funcionando muito bem agora.
Mas elas não são. Existem configurações que controlam, por exemplo, quanto de RAM o banco de dados pode usar, e que estão embutidas no app.yml. Você pode editá-las manualmente ou executar novamente o discourse-setup.