家用小服务器跑了几个 web 和 php 服务(绝大部分通过 docker 部署),通过 nginx 反代稳定运行半年左右
近期所有服务均出现了间歇 502 ,检查日志,都是报 connect() failed connect() failed (111: Connection refused) while connecting to upstream, client
尝试将 nginx 迁移到单独的虚拟机上,情况稍有好转,但是无法根治
网上检索过资料,但是用处都不大
尝试精简服务(删除大部分容器),减轻负载,但是没有效果
附环境 DEBIAN 11 NGINX 1.18
1
cz5424 2022-12-01 22:34:41 +08:00
上次遇到了这种问题时后端不支持长链接,降级为 1.0 解决
|
2
seers 2022-12-01 22:37:56 +08:00
keepalive_timeout 设置了没,是不是没释放长连接
|
3
winson030 2022-12-01 22:51:14 +08:00
可以看看我发过的一个帖子,也是遇到 502 的情况。我这边主要是因为订阅转换链接太长了,nginx 没设置反向代理缓冲区,导致返回 502 。把 proxy_buffer_size 相关的设置都配一下,应该就可以了。试试看。
|
4
xiaoyuesanshui OP 多谢各位好心大哥的指导
我这边破案了,要被自己蠢哭了 由于 acme 的自签证书会每 60 天自动重签,重签后,如果不 reload nginx 新证书不会生效。 为了应对这个,我就写了一个 crontab ,每月 1 号自动重启 nginx 和 docker 但是我脑子抽筋写成了 * * 1 * * systemctl restart nginx /docker 今天 1 号到了,所以我的服务器今天一天都在不停的重启 docker 和 nginx 然而 docker 启动所有镜像都需要时间,所以会间歇的 502 ,这也解释了,为啥我感觉越删镜像,502 来的越频繁 |
5
ab 2022-12-01 23:16:25 +08:00 via iPhone
@xiaoyuesanshui #4 acme 不是会自动 reload nginx 吗?为何还要自己写定时
|
6
xiaoyuesanshui OP @ab #5 理论上是这样,但是总是 reload 不出来,所以干脆就自己写 crontab 了,结果搞出这么一个限时乌龙
|
7
julyclyde 2022-12-02 09:18:29 +08:00
@xiaoyuesanshui 我记得重启 docker 服务应该不会顺便重启容器啊
|
8
xiaoyuesanshui OP @julyclyde #7 呃 crontab 里写的是 reload.....
|
9
julyclyde 2022-12-02 11:59:49 +08:00
@xiaoyuesanshui 那应该更不影响啊
|
10
xiaoyuesanshui OP @julyclyde #9 但是我改了 crontab 后,就正常了,也不重启了,服务都正常了
|
11
julyclyde 2022-12-05 11:45:00 +08:00
@xiaoyuesanshui 你的 docker 是不是旧版本的呀?我记得分离重启这个功能似乎是 17 还是 18 版本加上的?应该已经挺早的了
或者……你是不是用的腾讯内部 bug 版? |
12
xiaoyuesanshui OP |
13
julyclyde 2022-12-05 17:30:37 +08:00
|
14
xiaoyuesanshui OP @julyclyde #13 多谢 我研究研究
|