Erro 502 no nginx

Olá,

Acabei de executar ./launcher rebuild app sem erros aparentes. Mas, ao tentar abrir o site, recebo um erro 502.

O log de erro do nginx (shared/standalone/log/var-log/nginx/error.log) mostra:

2020/08/12 05:47:43 [error] 653#653: *7 connect() failed (111: Connection refused) while connecting to upstream, client: [...], server: _, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:3000/", host: "[...]"

Verifiquei todos os tópicos que encontrei sobre erros 502 entre Discourse e nginx, mas não consegui encontrar ou entender nada que faça sentido para o meu caso.

Isso pode ser relevante, executando dentro do container:

# netstat -plant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      644/nginx: master p 
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      644/nginx: master p 
tcp6       0      0 :::6379                 :::*                    LISTEN      -                   
tcp6       0      0 :::5432                 :::*                    LISTEN      -

Há algo que deveria estar rodando na porta 3000?

Poderia me orientar sobre onde procurar mais informações para depurar esse problema?

Pura vida :slight_smile:

Inicialmente, ele mostra 502, pois os serviços dentro do contêiner estão iniciando. Isso deve desaparecer em até 30 segundos. Se não desaparecer, é possível que a CPU do seu servidor esteja sob carga extrema, o que está causando lentidão.

Obrigado, @itsbhanusharma.

Executei ./launcher restart app e monitorei a carga com o top, e ela está bem abaixo de 10%.

Acho que a CPU é suficiente para lidar com a carga:

$ cat /proc/cpuinfo  | grep 'name' | uniq
model name      : Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz
$ cat /proc/cpuinfo  | grep process | wc -l
4

Existe uma maneira melhor de depurar a inicialização do container?
Alguma outra ideia?

Quais plugins estão instalados? Este servidor está em SSD?

Acabei de clonar o repositório e executei os comandos de configuração, então imagino que ele tenha apenas os plugins padrão? Não tenho certeza de onde verificar, mas tenho certeza de que não adicionei nenhum.

O servidor não é SSD.

Olá @elopio

Você poderia postar seu arquivo ‘yml’ sem nenhuma informação sensível?

Claro, está aqui:

O Discourse exige SSD; discos giratórios comuns não oferecem IOPS suficientes.

E isso é a causa do erro 502? Ou, sem um SSD, eu deveria ver o site funcionando, mas muito lento?

Usar um disco rígido tradicional versus um SSD não deve causar um erro 502. Isso não é realmente plausível, como sua pergunta indica @elopio.

Aqui está um pequeno resumo que pode ser útil:

Na minha opinião, o melhor a fazer é abrir alguns terminais e executar tail -f nos arquivos de log do Rails e do nginx, incluindo os logs de erro e os logs de acesso; em seguida, tente acessar e certifique-se de que, ao ver o erro 502, você esteja observando as últimas linhas dos arquivos de log.

Você sabe onde esses arquivos de log estão localizados e como executar os comandos tail -f neles nos terminais?


Nota: você perguntou anteriormente:

O Rails roda na porta 3000 dentro do contêiner Docker e essa porta não é exposta para fora do contêiner. É por isso que você não vê a porta 3000 fora do contêiner ao executar o netstat fora dele.

Espero que ajude.

Falando por experiência própria, IO lento absolutamente pode e causa timeouts e um erro 502.

IOPS no nível de SSD são um requisito firme.

Uau, ao analisar os logs do Rails, descobri que o log do Unicorn estava enorme, reclamando de alguns erros de permissão. Excluí rm -rf tmp/cache/bootsnap-compile-cache/, e agora vejo a tela de parabéns!!!

Obrigado, amigos. Vou brincar um pouco mais com isso antes de decidir recriá-lo em um servidor SSD.

De nada, @elopio

Fico feliz que você tenha encontrado o problema nos logs e resolvido tudo. Muito bem.

Desejamos que tudo corra bem à frente!

Ok, isso está funcionando brilhantemente. Quero mostrar o que estamos fazendo:

https://bunqueer.jaquerespeis.org/

É a migração do hackerspace da Costa Rica do Telegram para o Discourse :slight_smile: Ainda temos muitas coisas a fazer, mas dessa vez tenho certeza de que conseguiremos definitivamente nos livrar do chat. Muito obrigado, pessoal do Discourse!