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

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

  •  
  •   c4923 Nov 3, 2025 3733 views
    This topic created in 194 days ago, the information mentioned may be changed or developed.

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

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

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

    docker 版本是 23.0.6

    29 replies    2025-11-05 12:11:57 +08:00
    defunct9
        1
    defunct9  
       Nov 3, 2025   4
    开 ssh ,让我上去看看
    finab
        2
    finab  
       Nov 3, 2025   1
    你 docker 运行的不是提供服务本身的那个进程吧?
    c4923
        3
    c4923  
    OP
       Nov 3, 2025
    @finab 就是后端服务本身
    c4923
        4
    c4923  
    OP
       Nov 3, 2025
    @defunct9 哈哈,我也想,但是条件不允许
    log4j
        5
    log4j  
       Nov 3, 2025   2
    有没有可能你服务的进程不是 0 号?这种情况它异常退出后 docker 是不知道
    v2er4241
        6
    v2er4241  
       Nov 3, 2025   1
    多半是自己程序的 bug ,异常终止了。docker logs 的输出内容是可以通过程序修改的,所以如果程序自己崩了,没有弹出异常,docker 容器也不知道发生了什么。检查一下程序有没有 bug 吧。
    c4923
        7
    c4923  
    OP
       Nov 3, 2025
    @klo424 目前初步怀疑确实是程序本身的问题,但因为不好排查所以无法判断,而且同一个版本下使用 Windows 的二进制运行的没有出现过类似的问题
    c4923
        8
    c4923  
    OP
       Nov 3, 2025
    @log4j 看了下,服务本身确实不是 0 号进程,0 号进程是一个启动脚本。那就更可能是服务本身出现了问题。
    kd9yYw2RyhQwAwzn
        9
    kd9yYw2RyhQwAwzn  
       Nov 3, 2025
    可以写 health check 做健康检查
    taohua1c
        10
    taohua1c  
       Nov 3, 2025
    写个定时任务,每晚重启下 docker 服务,先跑着
    c4923
        11
    c4923  
    OP
       Nov 3, 2025
    @kd9yYw2RyhQwAwzn 目前想到的解决方案是健康检查,但是我希望还是能找到具体原因。主要这么奇怪的情况我也是第一次遇到。
    c4923
        12
    c4923  
    OP
       Nov 3, 2025
    @taohua1c 这个只能在实在没办法的情况下才能用了
    johnbobby
        13
    johnbobby  
       Nov 3, 2025
    dockerfile 有问题吧,就像楼上说的不是 0 号进程
    Daybyedream
        14
    Daybyedream  
       Nov 3, 2025
    进容器看业务到底咋回事呀
    deplives
        15
    deplives  
       Nov 3, 2025
    盲猜 dockerfile 有问题,容器内启动的进程不是 0 导致即使服务挂了 docker 也认为没有问题一切正常
    xzysaber
        16
    xzysaber  
       Nov 3, 2025
    这就是为什么 Docker 推荐一个容器一个进程,即使多个进程也要有成熟的进程管理工具。
    newaccount
        17
    newaccount  
       Nov 3, 2025
    你有请求日志吧?把那些重放一遍看能重现出来不,不然等 2-3 周实在没法弄
    TeeMoCode
        18
    TeeMoCode  
       Nov 3, 2025
    脚本中启动服务的命令是用的 exec 么?
    laminux29
        19
    laminux29  
       Nov 3, 2025
    如果把容器实例当成物理宿主机,虽然里面的服务进程挂起,但物理宿主机是仍然在运行的,因此你用 docker ps 显示容器实例正在运行,是正常现象。至于 docker log 无输出,是因为 docker log 可能绑定到服务进程的 log 输出,由于服务进程挂起,无 log 输出,所以你用 docker log 也无输出了。
    zhangyunlu80
        20
    zhangyunlu80  
       Nov 3, 2025
    这个意思不就是服务 hang 住了么
    c4923
        21
    c4923  
    OP
       Nov 3, 2025
    @johnbobby dockerfile 没有改动过,之前从来没遇到过这种问题。
    c4923
        22
    c4923  
    OP
       Nov 3, 2025
    @TeeMoCode 是的
    c4923
        23
    c4923  
    OP
       Nov 3, 2025
    @newaccount 试过了, 确实复现不了
    fds
        24
    fds  
       Nov 3, 2025   1
    保留现场,根据是什么语言,用相应工具提取一下 stack 看看卡在哪里了。
    软件 bug 很常见的,特别是有些异常输入之类的。大概率不是 docker 的问题。
    你要保证可用性,建议前面加个负载均衡之类的服务,这样一个停了,可以直接启动另外一个,然后分析前一个的状态。
    hefish
        25
    hefish  
       Nov 3, 2025
    多数是服务停了,但是启动服务的 shell 还活着。在等待控制台的输入。
    MineDog
        26
    MineDog  
       Nov 3, 2025
    从来都是 pid=1 的进程吧,0 号进程是什么
    TeeMoCode
        27
    TeeMoCode  
       Nov 3, 2025
    @c4923 脚本里面用 exec 启动服务,pid=1 的就是你的服务进程。执行 docker ps 看状态是 up ,那说明 pid=1 还活着。 用 docker exec 进容器执行 ps -p 1 -o stat,rss,vsz,cmd,wchan 看进程状态如何呢
    yinmin
        28
    yinmin  
       Nov 3, 2025 vi iPhone
    大概率是服务程序的代码 bug ,或者程序引入模块的 bug 。有些服务架构是有外部调用多少次就重启一个新进程,可以规避长时间运行不稳定的情况。
    julyclyde
        29
    julyclyde  
       Nov 5, 2025
    我猜你是用脚本启动的服务进程然后在脚本里做了无限等待吧
    About     Help     Advertise     Blog     API     FAQ     Solana     3054 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 91ms UTC 07:12 PVG 15:12 LAX 00:12 JFK 03:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86