【问题标题】:Docker leaving zombie processes (vieux/sshfs)Docker 离开僵尸进程 (vieux/sshfs)
【发布时间】:2019-10-19 01:22:47
【问题描述】:

我有一组少数服务,在撰写文件中,服务使用的 vieux/sshfs 驱动程序创建的卷很少。

服务生成的容器执行单个脚本,之后容器完成/退出并在其位置创建一个新容器 - 基本上服务一直在生成新容器。

一切都很顺利,除了主机中积累了异常大量的僵尸进程。当 docker 守护进程重新启动时,僵尸就会消失 - 一定是 docker 制造了僵尸。

"ps aux | grep 'Z'"

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3040  0.0  0.0      0     0 ?        Zs   14:13   0:00 [ssh] <defunct>
root      3042  0.0  0.0      0     0 ?        Zs   14:13   0:00 [sshfs] <defunct>
root      3052  0.0  0.0      0     0 ?        Zs   14:13   0:00 [ssh] <defunct>
root      3055  0.0  0.0      0     0 ?        Zs   14:13   0:00 [sshfs] <defunct>
...

据我了解,卷只创建一次,服务只是使用卷的本地副本 - 不创建新的 ssh 连接并直接从远程机器读取 - 这不应该创建另一个ssh 连接进程会变成僵尸。

我很难找到有关该主题的信息,这让我认为我在做一些根本错误的事情。请帮忙。

【问题讨论】:

    标签: docker zombie-process sshfs defunct


    【解决方案1】:

    我刚刚通过为 docker-compose 文件中的服务启用 Tini 解决了这个问题,如下所示 -

    init: true
    

    很少有僵尸 (

    我仍然不明白僵尸与 ssh 有什么关系。如果有人能回答我将不胜感激。

    PS:我在启用 Tini 几天后进行了检查。 一些累积的僵尸(~300,之前有~2000)。问题似乎有所缓解,但仍然存在。

    【讨论】:

      【解决方案2】:

      我最近读了一篇关于它的文章。 它只是说如果您将卷直接声明到 docker-compose.yml 中可能会导致僵尸 sshfs 进程出现一些问题。

      为避免这种情况,我尝试将卷声明为外部卷并手动运行 docker 卷的创建。

      docker volume create -d vieux/sshfs -o sshcmd="$USER_SSH@$IP:/mysupervolume" -o IdentityFile="/root/.ssh/$SSH_KEY" nameofmyvolume
      

      希望对某人有所帮助。

      氪,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-16
        • 2019-09-01
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多