我正在使用 puppeteer 和 puppeteer-cluster 来截取收到的 HTML 的屏幕截图。为了“绕过”Node.js 的单线程处理,我使用了几个 Docker 容器。
问题是它随机延长了渲染时间——一旦相同的 HTML 在 200 毫秒内渲染,下一次(相同的配置、环境等)它是 8.2 秒。Node 的日志不包含任何错误。
它有什么解决办法吗?
我正在使用 puppeteer 和 puppeteer-cluster 来截取收到的 HTML 的屏幕截图。为了“绕过”Node.js 的单线程处理,我使用了几个 Docker 容器。
问题是它随机延长了渲染时间——一旦相同的 HTML 在 200 毫秒内渲染,下一次(相同的配置、环境等)它是 8.2 秒。Node 的日志不包含任何错误。
它有什么解决办法吗?
没有理由“绕过 Node.js 的单线程处理”,因为大多数 puppeteer 操作都是异步执行的。在我看来,这听起来像是您正在解决一个实际上并不存在的问题。
当您在脚本之外使用 docker 时,进程变慢(延长渲染时间)也是有道理的,因为除了脚本之外,操作系统还需要运行 docker。
检查系统资源
我假设您的系统除了每个容器中的多个 Chrome 实例之外,还不能运行多个 docker 容器。监控 CPU 和内存,看看您是否遇到任何限制。