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

15 小时 29 分钟前
 c4923

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

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

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

docker 版本是 23.0.6

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

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

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

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

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

© 2021 V2EX