一次 Docker 容器内大量僵尸进程排查分析
前段时间线上的一个使用 Google Puppeteer 生成图片的服务炸了,每个 docker 容器内都有几千个孤儿僵死进程没有回收,如下图所示。 这篇文章比较长,主要就讲了下面这几个问题。 什么情况下会出现僵尸进程、孤儿进程 Puppeteer 工作过程启动的进程与线上事故分析 PID 为 1 的进程有什么特殊的地方 为什么 node/npm 不应该作为镜像中 PID 为 1 的进程 为什么 Bash 可以作为 PID 为 1 的进程,以及它做 PID 为 1 的进程有什么缺陷 镜像中比较推荐的 init 进程的做法是什么 Puppeteer 是一个 node 库,是 Chrome 官方提供的无界面 chrome 工具(headless chrome),它提供了操作 Chrome API 的方式,允许开发者在程序中启动 chrome 进程,调用 JS 的 API 实现页面加载、数据爬取、web 自动化测试等功能。 本案例中使用的场景是使用 Puppeteer 加载 html,随后截图生成一张分销海报的图片。文章分析了这个问题背后的原因,接下来开始正式的内容。 进程 每个进程都有一个...
