无法 运行 多节点子进程而不阻塞 DigitalOcean
Unable to Run Multiple Node Child Processes without Choking on DigitalOcean
我一直在努力 运行 DigitalOcean 上的多个 Puppeteer 实例很长一段时间,但运气不佳。我可以 运行 ~5 同时使用像 puppeteer-cluster 这样的工具,但由于某种原因,整个事情几乎没有什么有用的信息。因此,我转而在没有任何额外库的情况下生成 ~5 个子进程——只是 Puppeteer 本身。同样的问题。扼流圈没有有用的错误。
我能够 运行 在本地很好地完成所有这些工作,但在我部署之后,我遇到了这些问题。所以,我的直觉是这是一个 resource/performance 问题,但我不能肯定地说。
我正在 运行在 Digital Ocean 上安装 1GB 和 3CPU 的 Droplet。
基本上,我只是在寻找解决此类问题的方法。有没有一种方法可以确定我正在使用资源墙?我试过 pm2 和 DO 仪表板图,但我觉得这些都遗漏了很多信息,或者我完全遗漏了其他东西。
很可能您 运行 内存不足,5 个 puppeteer 进程对于 1GB VM 来说已经很多了。
你可以运行
grep -i 'killed process' /var/log/messages
确认 OOM 杀手终止了您的进程。
puppeteer-cluster
的作者在这里。你是对的,1 GB 内存可能不足以用于 运行ning 5 浏览器 windows(或选项卡)以及你的操作系统甚至其他后台任务。
这是您应该检查的资源列表:
- Memory:使用
htop
之类的工具来检查您的应用程序 运行ning 时的内存使用情况。
- CPU:同样,您可以使用
htop
,3 vCPUs 应该足够 5 windows.
- 磁盘space:使用像
df
这样的工具检查磁盘上是否有足够的space。我知道磁盘上没有足够 space 的多种情况(比如一些旧内核填满了磁盘),而 Chrome 至少需要 一些 space 到 运行.
- 网络吞吐量:很少出现问题,但有时网络带宽不足以支持打开许多浏览器。使用
nload
之类的工具检查网络吞吐量。
要使用 htop
或 nload
,您可以在后台启动脚本 (node script.js &
) 或使用终端多路复用器(如 tmux
)。资源问题应该很容易发现。
我一直在努力 运行 DigitalOcean 上的多个 Puppeteer 实例很长一段时间,但运气不佳。我可以 运行 ~5 同时使用像 puppeteer-cluster 这样的工具,但由于某种原因,整个事情几乎没有什么有用的信息。因此,我转而在没有任何额外库的情况下生成 ~5 个子进程——只是 Puppeteer 本身。同样的问题。扼流圈没有有用的错误。
我能够 运行 在本地很好地完成所有这些工作,但在我部署之后,我遇到了这些问题。所以,我的直觉是这是一个 resource/performance 问题,但我不能肯定地说。
我正在 运行在 Digital Ocean 上安装 1GB 和 3CPU 的 Droplet。
基本上,我只是在寻找解决此类问题的方法。有没有一种方法可以确定我正在使用资源墙?我试过 pm2 和 DO 仪表板图,但我觉得这些都遗漏了很多信息,或者我完全遗漏了其他东西。
很可能您 运行 内存不足,5 个 puppeteer 进程对于 1GB VM 来说已经很多了。
你可以运行
grep -i 'killed process' /var/log/messages
确认 OOM 杀手终止了您的进程。
puppeteer-cluster
的作者在这里。你是对的,1 GB 内存可能不足以用于 运行ning 5 浏览器 windows(或选项卡)以及你的操作系统甚至其他后台任务。
这是您应该检查的资源列表:
- Memory:使用
htop
之类的工具来检查您的应用程序 运行ning 时的内存使用情况。 - CPU:同样,您可以使用
htop
,3 vCPUs 应该足够 5 windows. - 磁盘space:使用像
df
这样的工具检查磁盘上是否有足够的space。我知道磁盘上没有足够 space 的多种情况(比如一些旧内核填满了磁盘),而 Chrome 至少需要 一些 space 到 运行. - 网络吞吐量:很少出现问题,但有时网络带宽不足以支持打开许多浏览器。使用
nload
之类的工具检查网络吞吐量。
要使用 htop
或 nload
,您可以在后台启动脚本 (node script.js &
) 或使用终端多路复用器(如 tmux
)。资源问题应该很容易发现。