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

22 小时 4 分钟前
 c4923

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

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

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

docker 版本是 23.0.6

1777 次点击
所在节点    Docker
28 条回复
c4923
20 小时 34 分钟前
@johnbobby dockerfile 没有改动过,之前从来没遇到过这种问题。
c4923
20 小时 18 分钟前
@TeeMoCode 是的
c4923
20 小时 18 分钟前
@newaccount 试过了, 确实复现不了😭
fds
20 小时 14 分钟前
保留现场,根据是什么语言,用相应工具提取一下 stack 看看卡在哪里了。
软件 bug 很常见的,特别是有些异常输入之类的。大概率不是 docker 的问题。
你要保证可用性,建议前面加个负载均衡之类的服务,这样一个停了,可以直接启动另外一个,然后分析前一个的状态。
hefish
19 小时 29 分钟前
多数是服务停了,但是启动服务的 shell 还活着。在等待控制台的输入。
MineDog
17 小时 39 分钟前
从来都是 pid=1 的进程吧,0 号进程是什么
TeeMoCode
16 小时 3 分钟前
@c4923 脚本里面用 exec 启动服务,pid=1 的就是你的服务进程。执行 docker ps 看状态是 up ,那说明 pid=1 还活着。 用 docker exec 进容器执行 ps -p 1 -o stat,rss,vsz,cmd,wchan 看进程状态如何呢
yinmin
14 小时 2 分钟前
大概率是服务程序的代码 bug ,或者程序引入模块的 bug 。有些服务架构是有外部调用多少次就重启一个新进程,可以规避长时间运行不稳定的情况。

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

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

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

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

© 2021 V2EX