Puppeteer 正在留下大量已失效的镀铬进程

Puppeteer is leaving a massive amount of chrome defunct processes

提问人:SirLouen 提问时间:8/17/2023 更新时间:8/18/2023 访问量:113

问:

我目前正在使用 PHP 的 puppeteer 改编版,称为 puphpeteer。它运行良好,使用一个名为 rialto-php 的库(已弃用,但它仍然运行良好),它能够从 PHP 管理 Node 资源,这非常简洁。我正在使用 puppeteer 20、PHP 8.2 和 Node 16.20 的最新更新。

但是我找不到方法来理解为什么每次调用它都会创建 6 个 chrome 进程,并且在进程结束时它们都结束了

 614 ?        00:00:00 chrome <defunct>
  628 ?        00:00:00 chrome <defunct>
  629 ?        00:00:00 chrome <defunct>
  682 ?        00:00:00 chrome <defunct>
  696 ?        00:00:00 chrome <defunct>
  718 ?        00:00:00 chrome <defunct>

我还使用最新的 chrome-stable 和 Puppeteer 来讨论这些参数

$browser = $puppeteer->launch([
                'executable_path' => 'google-chrome-stable',
                'args' => ['--no-sandbox', '--disable-setuid-sandbox'],
        ]);

这是该函数的要点,它只是从我的页面获取 iFrame URL。https://gist.github.com/SirLouen/8c274ae588eece30a14b43e7af4880f8

你对我如何确定这个问题的罪魁祸首有什么想法吗?

第一件事是我正在考虑将此代码转换为 JS 并直接在原始 puppeteer 库上对其进行测试,但我已经与使用 puphpeteer 的其他人进行了评论,他们没有发现这个已失效的问题。

PHP 节点.js 谷歌浏览器 傀儡师

评论

0赞 ggorlen 8/17/2023
在块中关闭浏览器。finally
0赞 SirLouen 8/17/2023
@ggorlen按照您的建议,我已经相应地修改了代码 gist.github.com/SirLouen/8c274ae588eece30a14b43e7af4880f8 但我在输出中看不到任何特别的东西,并且相同的失效进程不断出现。

答:

0赞 SirLouen 8/18/2023 #1

这是直接从节点运行的 JS 中的等效代码。我花了一段时间,因为我以前从未使用过 node,而且我必须阅读文档。

https://gist.github.com/SirLouen/6c2b540d0f22d234cc9a4df9e3c5bf26

但是在运行它之后,也以大量 chrome 失效的进程结束

结论:问题未解决,但万一在某个地方发现这个问题,我会留下我的结果。在这些条件下,傀儡师中的某处可能存在错误。我将在他们的错误跟踪器中报告。