首页 > 解决方案 > 减少 selenium/standalone-chrome 内存使用

问题描述

我正在运行selenium/standalone-chrome:3.141docker 容器,并且经常看到容器使用了 ~4.5GB 的 RAM。我的目标是一次能够支持对外部站点的 3-4 个并发请求。为此,我正在运行容器:

NODE_MAX_SESSIONS: '5'
NODE_MAX_INSTANCES: '1'

根据我的阅读,这应该给我 1 个 Chrome 实例,最多 5 个会话。但是有了这个配置,我在我的应用程序中也看到了很多这样的异常:

Facebook\WebDriver\Exception\WebDriverCurlException
Curl error thrown for http POST to /session with params: {"browserName":"chrome","platform":"ANY","chromeOptions":{"w3c":false,"binary":""}}} Failed to connect to selenium port 4444: Connection refused

这向我表明它无法接受更多连接。

如何以一种方式运行此容器以接受到外部站点的一些并发连接/请求,同时保持尽可能低的占用空间?我知道 Chrome 是个内存大户,那么在这种情况下,它甚至有可能低于 ~4.5GB 内存吗?

标签: seleniumselenium-chromedriver

解决方案


由于您使用的是 docker,我假设弹出一个实际的窗口/GUI 并不重要,对吧?您的网络驱动程序是否在无头模式下运行? https://developers.google.com/web/updates/2017/04/headless-chrome 这可能会节省很多内存。我还想指出,即使 Chrome 在无头模式下运行,如果这对您很重要,您仍然可以截取屏幕截图。


推荐阅读