使用无头浏览器呈现 100,000 个页面,在 aws 上每秒最多 cpu

100,000 page renders using headless browser, max per cpu per second on aws

我正在做一个抓取项目,需要使用浏览器在我访问的网站上加载 javascript。

如果仅使用 http,我可以在 m4.large 上达到 150/second。其中有 2 cpus。在使用无头 chrome 的初始测试中,它在 4 / second 周围慢得多,通常瓶颈是 CPU 而不是 RAM。对于许多网页来说,基本的 http 就可以了,但越来越多的单页应用程序等就不行了。

有没有人有做类似事情的经验?你能取得什么成就?您使用的堆栈是什么,例如python, selenium, headless chrome and multiprocessing。您是否必须更改 chrome 的配置?

根据 Chrome 的开发工具中的 "Performance" 选项卡,Stack Overflow 上的这个特定页面需要 1.2 秒才能加载到我的机器上:

您可以通过 CPU 使用情况或挂钟时间来分解它,但关键是这需要一段时间。

在这种情况下,我会在浏览器中加载一次页面以了解访问了哪些资源,然后使用浏览器以外的负载测试工具执行这些资源。

天真地执行这个 curl 命令——首先通过用 & 替换 ; 来并行化它——在我的机器上需要 1.8 秒。但重点是您只想访问服务器,而不是解释任何 HTML、CSS、JavaScript 或图像。

但是如果您想 抓取 网络并查看每次加载页面时真正发生的情况,以便您可以查看页面并决定下一步去哪里,除了无头浏览器之外还有很多事情要做。实际生产网络爬虫的机器预算要大得多,并且可能会使用巧妙的技术来避免在解码图像和布局 CSS.

上浪费 CPU