使用无头浏览器呈现 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
我正在做一个抓取项目,需要使用浏览器在我访问的网站上加载 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