docker ps 显示正在运行,但是服务已经 down 了

1 天前
 c4923

这段时间我们这边服务经常遇到一个诡异的问题。

服务在容器中正常运行了 2-3 周,期间没有人管过。某一天后端服务突然挂掉不再提供服务了。

排查性能相关,cpu ,磁盘,内存都是正常的,docker ps 也显示正常没有重启之类的情况。但是 docker logs 日志停止输出。必须手动 docker restart 才能恢复服务,文件描述符数量也正常,容器日志也不存在写满的情况。因为要优先恢复服务可用性,所以没办法再排查更加细致的内容,有没有大佬遇到过类似的问题?或者说有大佬能提供一下下次出现类似情况的排查思路吗?

docker 版本是 23.0.6

1831 次点击
所在节点    Docker
28 条回复
defunct9
1 天前
开 ssh ,让我上去看看
finab
1 天前
你 docker 运行的不是提供服务本身的那个进程吧?
c4923
1 天前
@finab 就是后端服务本身
c4923
1 天前
@defunct9 哈哈,我也想,但是条件不允许😂
log4j
1 天前
有没有可能你服务的进程不是 0 号?这种情况它异常退出后 docker 是不知道
klo424
1 天前
多半是自己程序的 bug ,异常终止了。docker logs 的输出内容是可以通过程序修改的,所以如果程序自己崩了,没有弹出异常,docker 容器也不知道发生了什么。检查一下程序有没有 bug 吧。
c4923
1 天前
@klo424 目前初步怀疑确实是程序本身的问题,但因为不好排查所以无法判断,而且同一个版本下使用 Windows 的二进制运行的没有出现过类似的问题
c4923
1 天前
@log4j 看了下,服务本身确实不是 0 号进程,0 号进程是一个启动脚本。那就更可能是服务本身出现了问题。
kd9yYw2RyhQwAwzn
1 天前
可以写 health check 做健康检查
taohua1c
1 天前
写个定时任务,每晚重启下 docker 服务,先跑着
c4923
1 天前
@kd9yYw2RyhQwAwzn 目前想到的解决方案是健康检查,但是我希望还是能找到具体原因。主要这么奇怪的情况我也是第一次遇到。
c4923
1 天前
@taohua1c 这个只能在实在没办法的情况下才能用了
johnbobby
1 天前
dockerfile 有问题吧,就像楼上说的不是 0 号进程
Daybyedream
1 天前
进容器看业务到底咋回事呀
deplives
1 天前
盲猜 dockerfile 有问题,容器内启动的进程不是 0 导致即使服务挂了 docker 也认为没有问题一切正常
xzysaber
1 天前
这就是为什么 Docker 推荐一个容器一个进程,即使多个进程也要有成熟的进程管理工具。
newaccount
1 天前
你有请求日志吧?把那些重放一遍看能重现出来不,不然等 2-3 周实在没法弄
TeeMoCode
1 天前
脚本中启动服务的命令是用的 exec 么?
laminux29
1 天前
如果把容器实例当成物理宿主机,虽然里面的服务进程挂起,但物理宿主机是仍然在运行的,因此你用 docker ps 显示容器实例正在运行,是正常现象。至于 docker log 无输出,是因为 docker log 可能绑定到服务进程的 log 输出,由于服务进程挂起,无 log 输出,所以你用 docker log 也无输出了。
zhangyunlu80
1 天前
这个意思不就是服务 hang 住了么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1170081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX