What happened?
As of Grid v4.44.0, in a dynamic grid deployment using the standalone video container, both the browser and the video container run ffmpeg, instead of just the video container. This doubles the load and leads to OOM-killer being triggered on our Grid server.
It looks like #3131 caused this. If I pin the browser container to the older version in config.toml, then only the recorder container tries to create the video file, as expected.
config.toml:
[docker]
configs = [
"selenium/standalone-firefox:4.44.0-20260505", '{"browserName": "firefox", "platformName": "linux"}',
"selenium/standalone-chrome:4.44.0-20260505", '{"browserName": "chrome", "platformName": "linux"}',
"selenium/standalone-edge:4.44.0-20260505", '{"browserName": "MicrosoftEdge", "platformName": "linux"}'
]
host-config-keys = ["Dns", "DnsOptions", "DnsSearch", "ExtraHosts", "Binds"]
url = "http://127.0.0.1:2375"
video-image = "selenium/video:ffmpeg-8.1-20260505"
Quadlets:
# cat /etc/containers/systemd/selenium-hub.container
[Container]
ContainerName=selenium-hub
Image={PROXY_REGISTRY}/selenium/hub:4.44.0-20260505
LogDriver=journald
Network=selenium-grid.network
PublishPort=4442:4442
PublishPort=4443:4443
PublishPort=4444:4444
PublishPort=[::]:4442:4442
PublishPort=[::]:4443:4443
PublishPort=[::]:4444:4444
[Unit]
StartLimitIntervalSec=30
StartLimitBurst=2
[Service]
Restart=always
[Install]
WantedBy=default.target
# cat /etc/containers/systemd/selenium-node.container
[Container]
ContainerName=selenium-node
Environment=DOCKER_SOCK=/var/run/podman/podman.sock
Environment=SE_EVENT_BUS_HOST=selenium-hub
Environment=SE_VIDEO_RECORD_STANDALONE=True
Image={PROXY_REGISTRY}/selenium/node-docker:4.44.0-20260505
LogDriver=journald
Network=selenium-grid.network
Volume=/root/config.toml:/opt/selenium/docker.toml
Volume=/var/run/podman/podman.sock:/var/run/docker.sock
Volume=/var/www/html/videos:/opt/selenium/assets
PodmanArgs=--privileged
[Unit]
StartLimitIntervalSec=30
StartLimitBurst=2
After=selenium-hub.service
[Service]
Restart=always
[Install]
WantedBy=default.target
# cat /etc/containers/systemd/selenium-grid.network
[Network]
NetworkName=selenium-grid
IPv6=true
Command used to start Selenium Grid with Docker (or Kubernetes)
systemctl start selenium-hub selenium-node
# See issue description for configuration files
Relevant log output
Example ps output showing both types of containers creating video files during a session:
# browser
root 58606 1 0 70729 2340 4 16:01 ? 00:00:00 /usr/bin/conmon [...] -n browser-chrome-1779912103789-09589650 [...]
1200 58618 58606 0 1868 3928 36 16:01 ? 00:00:00 bash /opt/bin/entry_point.sh
1200 58633 58618 0 9775 27744 25 16:01 ? 00:00:00 /home/seluser/venv/bin/python3 /home/seluser/venv/bin/supervisord --configuration /etc/supervisord.conf
1200 58643 58633 0 86582 35608 44 16:01 ? 00:00:00 python3 /opt/bin/video_recorder.py
1200 59917 58643 39 243620 110644 67 16:01 ? 00:00:23 ffmpeg -hide_banner -loglevel warning -threads 1 -thread_queue_size 512 -probesize 32M -analyzeduration 0 -y -f x11grab -video_size 1920x1080 -r 15 -i localhost:99.0 -codec:v libx264 -preset ultrafast -tune zerolatency -crf 28 -maxrate 1000k -bufsize 2000k -pix_fmt yuv420p -movflags frag_keyframe+empty_moov+default_base_moof /videos/9dcf6077b210526ac880b795741f6c93.mp4
# recorder
root 60454 1 0 70729 2340 71 16:01 ? 00:00:00 /usr/bin/conmon [...] -n recorder-chrome-1779912107824-21447003 [...]
1200 60465 60454 0 1081 3524 57 16:01 ? 00:00:00 bash /opt/bin/entry_point.sh
1200 60484 60465 0 8857 27344 54 16:01 ? 00:00:00 /home/seluser/venv/bin/python3 /home/seluser/venv/bin/supervisord --configuration /etc/supervisord.conf
1200 60490 60484 0 4207 11256 12 16:01 ? 00:00:00 python3 /opt/bin/video_recorder.py
1200 60492 60490 0 1210 3788 70 16:01 ? 00:00:00 bash /opt/bin/video.sh
1200 60503 60492 50 243425 109504 61 16:01 ? 00:00:28 ffmpeg -hide_banner -loglevel warning -threads 1 -thread_queue_size 512 -probesize 32M -analyzeduration 0 -y -f x11grab -video_size 1920x1080 -r 15 -i 10.89.0.34:99.0 -codec:v libx264 -preset ultrafast -tune zerolatency -crf 28 -maxrate 1000k -bufsize 2000k -pix_fmt yuv420p -movflags frag_keyframe+empty_moov+default_base_moof /videos/video.mp4
Operating System
RHEL 8
Docker Selenium version (image tag)
4.44.0-20260505
Selenium Grid chart version (chart version)
No response
What happened?
As of Grid v4.44.0, in a dynamic grid deployment using the standalone video container, both the browser and the video container run
ffmpeg, instead of just the video container. This doubles the load and leads to OOM-killer being triggered on our Grid server.It looks like #3131 caused this. If I pin the browser container to the older version in config.toml, then only the recorder container tries to create the video file, as expected.
config.toml:
Quadlets:
Command used to start Selenium Grid with Docker (or Kubernetes)
systemctl start selenium-hub selenium-node # See issue description for configuration filesRelevant log output
Operating System
RHEL 8
Docker Selenium version (image tag)
4.44.0-20260505
Selenium Grid chart version (chart version)
No response