Nginx 上游超时 (110: 连接超时)

你好,我的网站是 https://1o24bbs.com/

没有进行任何升级或操作,nginx 突然显示无法连接到上游服务:http://127.0.0.1:3000

该如何排查这个问题?感谢帮助。

/shared/log/rails# tail -f unicorn.stdout.log

2021-07-08T09:01:03.403Z pid=682 tid=sim ERROR: 获取作业失败:无法连接到 localhost:6379 上的 Redis (Errno::EADDRNOTAVAIL)

2021-07-08T09:01:03.412Z pid=682 tid=t4m ERROR: 获取作业失败:无法连接到 localhost:6379 上的 Redis (Errno::EADDRNOTAVAIL)

2021-07-08T09:01:03.406Z pid=682 tid=tra ERROR: 获取作业失败:无法连接到 localhost:6379 上的 Redis (Errno::EADDRNOTAVAIL)

2021-07-08T09:01:03.407Z pid=682 tid=sn6 ERROR: 获取作业失败:无法连接到 localhost:6379 上的 Redis (Errno::EADDRNOTAVAIL)

2021-07-08T09:01:03.407Z pid=682 tid=sze ERROR: 获取作业失败:无法连接到 localhost:6379 上的 Redis (Errno::EADDRNOTAVAIL)

正在进程 ID 648 中加载 Sidekiq

自我终止监控器已消失

自我终止监控器已消失

自我终止监控器已消失

正在进程 ID 780 中加载 Sidekiq

/var/log/redis# tail -f current

553:M 2021 年 7 月 8 日 09:11:59.078 * 60 秒内发生 10000 次变更。正在保存…

553:M 2021 年 7 月 8 日 09:11:59.079 * 后台保存已由进程 ID 1270 启动

1270:C 2021 年 7 月 8 日 09:12:01.584 * 数据库已保存到磁盘

1270:C 2021 年 7 月 8 日 09:12:01.595 * RDB:写时复制使用了 0 MB 内存

553:M 2021 年 7 月 8 日 09:12:01.619 * 后台保存成功终止

553:M 2021 年 7 月 8 日 09:13:02.098 * 60 秒内发生 10000 次变更。正在保存…

553:M 2021 年 7 月 8 日 09:13:02.099 * 后台保存已由进程 ID 1339 启动

1339:C 2021 年 7 月 8 日 09:13:04.052 * 数据库已保存到磁盘

1339:C 2021 年 7 月 8 日 09:13:04.055 * RDB:写时复制使用了 0 MB 内存

553:M 2021 年 7 月 8 日 09:13:04.137 * 后台保存成功终止

rebuild app 期间出现错误:Failed listening on port 6379(无法监听端口 6379)。

这是 Discourse 官方标准安装 吗?

你的磁盘空间是否充足(如果你尝试过重建,应该已经注意到了)。

这看起来是 Redis 的问题,但仅凭你提供的信息,我无法确定具体原因。

是的,该网站多年来一直运行正常。

我开始觉得这可能不是 Redis 的问题。
Sidekiq 是一个后台任务处理工具,对吧?

这不应该导致 http://127.0.0.1:3000 无法访问。

nginx 中的更多日志

2021/07/08 10:54:31 [error] 570#570: *169 上游读取响应头时超时 (110: 连接超时),客户端:100.19.76.187,服务器:_,请求:“POST /message-bus/4cf07f106ff14fd885fd735ea28abce4/poll?dlp=t HTTP/2.0”,上游:“http://127.0.0.1:3000/message-bus/4cf07f106ff14fd885fd735ea28abce4/poll?dlp=t",主机:“1o24bbs.com”,引用来源:"https://1o24bbs.com/t/icc/25834

2021/07/08 10:54:32 [error] 570#570: *169 连接上游时超时 (110: 连接超时),客户端:100.19.76.187,服务器:_,请求:“POST /message-bus/fe81f75495324a109de3812a3c5a9abd/poll?dlp=t HTTP/2.0”,上游:“http://127.0.0.1:3000/message-bus/fe81f75495324a109de3812a3c5a9abd/poll?dlp=t",主机:“1o24bbs.com”,引用来源:"https://1o24bbs.com/t/icc/23914

2021/07/08 10:54:33 [error] 570#570: *169 上游读取响应头时超时 (110: 连接超时),客户端:100.19.76.187,服务器:_,请求:“POST /message-bus/1dd105462c5b4b4c978e1702fa885e14/poll?dlp=t HTTP/2.0”,上游:“http://127.0.0.1:3000/message-bus/1dd105462c5b4b4c978e1702fa885e14/poll?dlp=t",主机:“1o24bbs.com”,引用来源:"https://1o24bbs.com/t/topic/15436

2021/07/08 10:54:36 [error] 570#570: *13261 上游读取响应头时超时 (110: 连接超时),客户端:220.196.56.24,服务器:_,请求:“GET /?374e828961d36d46bd99dc8e13b7f640 HTTP/1.1”,上游:“http://127.0.0.1:3000/?374e828961d36d46bd99dc8e13b7f640",主机:“1o24bbs.com”,引用来源:"https://gateway.zscalertwo.net:443/auT?origurl=https%3A%2F%2F1o24bbs.com%2F%3F374e828961d36d46bd99dc8e13b7f640&wexps=1&_ordtok=SWk3WVhmhHBPJ4rLFk4nDRnkZ3&wexps=1

在 production.log 中,我看到

Processing by CategoriesController#index as HTML
Parameters: {“41528430213d6ae753e074e11328b67b”=>nil}
Job exception: FATAL: 数据库系统正在关闭

@pfaffman 如何刷新 Redis?谢谢!

您是否已执行 PostgreSQL 13 更新

谢谢!
我的网站运行的是最新版本的 Discourse。我已经运行该版本至少一个月了。

我没有手动升级 PostgreSQL,但我认为 PostgreSQL 是 13 版本。
如何确认这一点?

$ psql -V
psql (PostgreSQL) 13.3 (Debian 13.3-1.pgdg100+1)

顺便一提,我正在运行一个单容器 app

您是否安装了任何非标准插件?

我安装的插件:

  • docker_manager
  • discourse-adplugin

您认为问题是出在 Redis 还是 PostgreSQL?

执行 # ./launcher enter app 后,运行 curl http://127.0.0.1:3000 会超时。

discourse-doctor 输出:

==================== DOCKER 信息 ====================
DOCKER 版本:Docker version 19.03.13, build 4484c46d9d

DOCKER 进程 (docker ps -a)

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                   PORTS                                      NAMES
70709beca56d        local_discourse/app                "/sbin/boot"             15 分钟前           运行中 15 分钟            0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
1828993cd957        discourse/base:2.0.20210528-1735   "/bin/bash -c 'cd /p…"   2 小时前            已退出 (1) 2 小时前                                              agitated_curie

70709beca56d        local_discourse/app   "/sbin/boot"        15 分钟前           运行中 15 分钟       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app

Discourse 容器 app 正在运行


==================== 插件 ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-adplugin.git

未检测到非官方插件。

官方列表请参阅:https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb

========================================

抱歉,我没有任何想法。你最近重启过吗?

我不得不启动一台新的虚拟机,并使用数据库备份来创建一个新的容器。但在那之后,问题似乎又出现了……

曾在一家公司网站(外汇在线汇款)遇到相同问题,尝试重启服务器并将超时时间设置为 1000 秒,然后进行测试。