elopio
(Leo Arias)
1
你好,
我刚运行了 ./launcher rebuild app,表面上没有报错。但当我尝试打开网站时,却收到了 502 错误。
Nginx 错误日志(shared/standalone/log/var-log/nginx/error.log)显示:
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: "[...]"
我已经查阅了所有关于 Discourse 和 Nginx 502 错误的相关帖子,但未能找到或理解任何与我的情况相符的内容。
这可能相关,这是在容器内运行的结果:
# 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 -
是否应该有某个服务在 3000 端口运行?
能否请您指导我,应该从哪里入手查找更多信息以调试此问题?
pura vida 
最初会显示 502 错误,因为容器内的服务正在启动。该错误应在 30 秒内消失。如果未消失,可能是您的服务器 CPU 负载过高,导致响应变慢。
elopio
(Leo Arias)
3
谢谢 @itsbhanusharma。
我运行了 ./launcher restart app 并用 top 监控了负载,目前远低于 10%。
我认为 CPU 应该足以应对负载:
$ 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
有没有更好的方法来调试容器的启动过程?
还有其他建议吗?
elopio
(Leo Arias)
5
我刚克隆了仓库并运行了设置命令,所以我想它只包含默认插件?我不确定在哪里查看,但我肯定没有添加任何插件。
服务器不是 SSD。
neounix
(Dark Matter)
6
嗨 @elopio
你能否发布你的‘yml’文件,但请去掉任何敏感信息?
Stephen
(Stephen)
8
Discourse 需要 SSD,普通的机械硬盘无法提供足够的 IOPS。
elopio
(Leo Arias)
9
这就是导致 502 错误的原因吗?还是说即使没有 SSD,网站也能正常运行,只是速度非常慢?
neounix
(Dark Matter)
10
使用传统机械硬盘与 SSD 硬盘不应导致 502 错误。这不太可能,正如你的问题所示 @elopio。
这里有一篇可能有帮助的简短说明:
在我看来,最好的做法是打开几个终端,对 Rails 和 nginx 的日志文件(包括错误日志和访问日志)运行 tail -f,然后尝试访问,确保在看到 502 错误时,你的注意力集中在日志文件的末尾。
你知道这些日志文件存放在哪里,以及如何在终端中对它们运行 tail -f 命令吗?
注意,你之前问过:
Rails 在 Docker 容器内的 3000 端口运行,且该端口未向容器外部暴露。这就是为什么你在容器外部运行 netstat 时看不到 3000 端口的原因。
希望这能帮到你。
Stephen
(Stephen)
11
根据经验,缓慢的 I/O 绝对会导致超时和 502 错误。
SSD 级别的 IOPS 是硬性要求。
elopio
(Leo Arias)
12
哇,查看 Rails 日志时,我发现 Unicorn 日志非常大,抱怨了一些权限错误。我执行了 rm -rf tmp/cache/bootsnap-compile-cache/ 删除了该目录,现在我看到祝贺屏幕了!!!
谢谢大家。在决定将其重新部署到 SSD 服务器之前,我会再稍微玩一下这个环境。
elopio
(Leo Arias)
14
好的,这运行得非常出色。我想展示一下我们正在做的事情:
https://bunqueer.jaquerespeis.org/
这是哥斯达黎加黑客空间从 Telegram 迁移到 Discourse 的项目
我们还有很多事情要做,但这次我确信我们一定能彻底告别聊天室。非常感谢 Discourse 团队!