Erreur 502 sur nginx

Bonjour,

Je viens d’exécuter ./launcher rebuild app sans erreur apparente. Cependant, lorsque j’essaie d’ouvrir le site, j’obtiens une erreur 502.

Le journal d’erreurs nginx (shared/standalone/log/var-log/nginx/error.log) indique :

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: "[...]"

J’ai consulté tous les sujets que j’ai trouvés concernant les erreurs 502 entre Discourse et nginx, mais je n’ai rien trouvé ou compris qui ait du sens pour mon cas.

Cela pourrait être pertinent, en exécutant depuis le conteneur :

# 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      -

Y a-t-il quelque chose qui devrait s’exécuter sur le port 3000 ?

Pourriez-vous s’il vous plaît m’indiquer où chercher davantage d’informations pour déboguer ce problème ?

Pura vida :slight_smile:

Une erreur 502 s’affiche initialement car les services à l’intérieur du conteneur sont en cours de démarrage. Elle devrait disparaître dans les 30 secondes. Si ce n’est pas le cas, il est possible que le processeur de votre serveur soit sous une charge extrême, ce qui provoque un ralentissement.

3 « J'aime »

Merci @itsbhanusharma.

J’ai exécuté ./launcher restart app et surveillé la charge avec top, et elle est bien en dessous de 10 %.

Je pense que le CPU devrait suffire pour gérer la charge :

$ 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-t-il une meilleure méthode pour déboguer le démarrage du conteneur ?
D’autres idées ?

1 « J'aime »

Quels plugins sont installés ? Ce serveur utilise-t-il un SSD ?

Je viens de cloner le dépôt et d’exécuter les commandes de configuration, donc je suppose qu’il ne contient que les plugins par défaut ? Je ne suis pas sûr d’où vérifier, mais je suis certain de n’en avoir ajouté aucun.

Le serveur n’utilise pas de SSD.

Salut @elopio

Peux-tu poster ton fichier « yml » sans les informations sensibles ?

Bien sûr, le voici :

Discourse nécessite des SSD ; les disques durs mécaniques classiques ne fournissent pas d’IOPS suffisants.

Est-ce la cause de l’erreur 502 ? Ou, sans SSD, le site devrait-il fonctionner mais être très lent ?

Utiliser un disque dur traditionnel plutôt qu’un SSD ne devrait pas provoquer une erreur 502. Ce n’est pas vraiment plausible, comme le suggère votre question, @elopio.

Voici un petit article qui pourrait vous être utile :

À mon avis, la meilleure chose à faire est d’ouvrir plusieurs terminaux et d’exécuter tail -f sur vos fichiers de logs Rails et nginx, y compris les journaux d’erreurs et les journaux d’accès. Ensuite, essayez d’accéder au service et assurez-vous que lorsque vous voyez l’erreur 502, vous avez les yeux fixés sur la fin des fichiers de logs.

Savez-vous où se trouvent ces fichiers de logs et comment exécuter les commandes tail -f dessus dans les terminaux ?


Notez que vous avez demandé plus tôt :

Rails s’exécute sur le port 3000 à l’intérieur du conteneur Docker, et ce port n’est pas exposé à l’extérieur du conteneur. C’est pourquoi vous ne voyez pas le port 3000 à l’extérieur du conteneur lorsque vous exécutez netstat en dehors du conteneur.

J’espère que cela vous aide.

Pour parler d’expérience, une IO lente peut et provoque absolument des délais d’attente et une erreur 502.

Les IOPS au niveau du SSD sont une exigence impérative.

Wooo, en regardant les journaux Rails, j’ai constaté que le journal Unicorn était énorme et signalait des erreurs de permissions. J’ai supprimé rm -rf tmp/cache/bootsnap-compile-cache/, et maintenant je vois l’écran de félicitations !!!

Merci les amis. Je vais jouer un peu plus avec cela avant de décider de le recréer sur un serveur SSD.

4 « J'aime »

Je t’en prie @elopio

Ravi que tu aies trouvé le problème dans les journaux et que tu aies résolu la situation. Bravo.

Je te souhaite une navigation fluide à l’avenir !

1 « J'aime »

Ok, cela fonctionne à merveille. Je veux montrer ce que nous faisons :

https://bunqueer.jaquerespeis.org/

C’est la migration de l’espace de hackers du Costa Rica de Telegram vers Discourse :slight_smile: Il nous reste encore énormément de choses à faire, mais cette fois, je suis sûr que nous réussirons à nous débarrasser définitivement du chat. Merci beaucoup à l’équipe de Discourse !

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.