3

很长一段时间以来,我一直在努力在 DigitalOcean 上运行多个 Puppeteer 实例,但运气不佳。我可以使用puppeteer-cluster之类的工具同时运行 ~5 个,但由于某种原因,整个事情只是因为很少有用的消息而窒息。所以,我切换到生成约 5 个子进程而没有任何额外的库——只是 Puppeteer 本身。同样的问题。没有任何有用错误的扼流圈。

我能够在本地很好地运行所有这些工作,但是在我部署之后,我遇到了这些问题。所以,我的直觉是这是一个资源/性能问题,但我不能肯定地说。

我在 Digital Ocean 上运行 1GB 和 3CPU 的液滴。

基本上,我只是在寻找开始解决此类问题的方法。有没有办法可以确定我正在撞到资源墙?我已经尝试过 pm2 和 DO 仪表板图,但我觉得这些都遗漏了很多信息,否则我完全错过了其他东西。

4

2 回答 2

4

这里的作者puppeteer-cluster。没错,1 GB 的内存可能不足以运行 5 个浏览器窗口(或选项卡)以及操作系统甚至其他后台任务。

以下是您应该检查的资源列表:

  • 内存htop:在应用程序运行时使用诸如检查内存使用情况的工具。
  • CPU:同样,您可以使用htop它,3 个 vCPU 对于 5 个窗口应该绰绰有余。
  • 磁盘空间:使用类似工具df检查磁盘上是否有足够的空间。我知道磁盘上没有足够空间的多种情况(比如一些旧内核填充磁盘),Chrome 至少需要一些空间才能运行。
  • 网络吞吐量:很少出现问题,但有时网络只是没有带宽来支持许多打开的浏览器。使用类似nload检查网络吞吐量的工具。

要使用htopor nload,您在后台启动脚本 ( node script.js &) 或使用终端多路复用器 (如tmux)。资源问题应该很容易被发现。

于 2019-07-31T17:06:52.927 回答
1

很可能您的内存不足,5 个 puppeteer 进程对于 1GB 虚拟机来说已经很多了。

你可以跑

grep -i 'killed process' /var/log/messages

确认 OOM 杀手终止了您的进程。

于 2019-07-31T16:25:59.903 回答