使用 Puppeteer 进行负载测试

3
我们尝试使用非常好用的 Puppeteer 对我们的网站进行负载测试,但是没有成功。
我们使用了强大的 AWS 机器(我们使用了 c5.metal),但仍然无法运行数百个浏览器(约200个)。我们开始出现与超时相关的错误。
顺便说一下:在同一时刻,我们尝试了从我们的计算机上运行,它可以正常工作,所以网站不是问题。
我的问题是,如果有人知道更好的方法来使用轻量级版本的某些工具在 AWS 机器上运行更多的浏览器,请告诉我们。
注意:我们的进程使用 Node.js 的子进程,因此每个进程只能运行 5 个浏览器。

1
你是在无头模式下运行它们吗?你是打开多个浏览器还是只是多个页面或选项卡? - XCS
无头模式。我在Linux操作系统上运行它。我使用多个浏览器。我也尝试在每个浏览器上使用几个页面(5个),但结果相同。 - Aviad
它导航到的网站有多重?我认为一个核心最多只能并行运行几个页面,特别是如果它导航的网站有很多JS和大型DOM。 - XCS
我使用了一台96核心的机器。这个网站不是很重,但它使用了websocket并且实时运行。所以为了运行10K个浏览器,我需要大约10K个核心(1K台机器)?这没有意义。普通的4核心电脑可以轻松运行多个浏览器和页面。当使用无头模式时,应该会更好,因为没有GUI界面。 - Aviad
在普通计算机上,通常一次只能显示/浏览一页。你禁用了页面渲染以加快速度吗?我认为还有其他技巧可以让它更快。 - XCS
显示剩余2条评论
1个回答

1
禁用页面渲染-或使用Puppeteer Firefox代替Chrome,这只是一个不同的节点模块。
至于超时,我会假设这是由于Chrome可怕的优化-在无头模式下运行以不需要GUI。
老实说,我怀疑这不是机器大小的问题,可能是因为Chrome太糟糕了,无论核心数量如何。
实际上,没有浏览器被构建为具有96个单独的实例-也许是选项卡,但不是实例。
尝试打开较少的数量,然后随着它们成功,再打开更多。

尝试过了,但没有成功。无论是使用火狐还是禁用图片/ CSS和字体请求都没有什么太大的效果。总之,我甚至无法运行1K。当有多个标签页时,有时速度会变得更慢。我设法在每个浏览器上保持10个标签页的平衡,这给了我最好的性能。 - Aviad
说实话,这可能只是因为火狐/谷歌浏览器在这方面没有进行优化:/ - 也许尝试禁用缓存以及任何其他设置?这可能只是因为火狐或谷歌浏览器没有经过充分优化。 - Toby
如果这个引擎本身没有能力创建设置,帮助我们减少占用空间(内存、CPU、网络),以便能够并行运行很多任务,那么我们就无可奈何了。期待谷歌团队能够在这方面给予支持和指导。 - Aviad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接