![如果 Docker 服务有 614 个 /usr/bin/unpigz 子进程,是不是出了什么问题](https://linux22.com/image/736326/%E5%A6%82%E6%9E%9C%20Docker%20%E6%9C%8D%E5%8A%A1%E6%9C%89%20614%20%E4%B8%AA%20%2Fusr%2Fbin%2Funpigz%20%E5%AD%90%E8%BF%9B%E7%A8%8B%EF%BC%8C%E6%98%AF%E4%B8%8D%E6%98%AF%E5%87%BA%E4%BA%86%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98.png)
在 GCE 中的 Ubuntu 实例中,当我通过 检查进程时,dockerd 下有 614 个 unpigz 子进程ps afx
。正常吗?重新启动 Docker 后,是否有机会重现……?
答案1
这实际上是一个 BUG(参见https://github.com/moby/moby/issues/38608)。这些进程会在Docker服务重启后消失,但是只要使用Docker的ADD *.tar.gz(或类似)功能,它们就会再次创建。
答案2
效率低下但并不危险。您可以决定此类流程是否对您的环境有益。
猪是 gzip 的并行实现。--processes 的默认最大值是在线处理器的数量,每个容器都会看到系统的所有 CPU。它们将争夺 CPU 和 I/O,因此可能会堆积起来并稍微影响 Linux 调度程序。
最佳进程数可能接近 CPU 数量的 2 倍。如果您一次运行大量 pigz,则将它们序列化、减少 --processes 或使用常规非线程 gunzip 可能会更有效。