Seleniumをdockerで動かすと異様に遅い 特定サイトで落ちる場合の対処法

Seleniumをdockerで動かすと異様に遅い 特定サイトで落ちる場合の対処法

Seleniumをdocker上で実行した場合のパフォーマンスや、特定のサイトを閲覧した時だけエラーが発生する場合の原因と対処法です。

原因

Seleniumのコンテナのメモリはデフォルトで64MBしかセットされておらず、メモリ不足によってパフォーマンスの低下・エラーが発生している可能性があります。

エラーが発生している場合は以下の曖昧な内容のエラーが表示されます。

selenium.common.exceptions.InvalidSessionIdException: Message: invalid session id

対処法

公式から2種類の対処法が記載されています。

[GitHub] SeleniumHQ / docker-selenium

ホストのメモリ領域(/dev/shm)をコンテナにマウントする

ホストがLinuxであれば、メモリ領域をコンテナにマウントすることでコンテナとメモリを共有できます。

docker run -it -v /dev/shm:/dev/shm [image]

コンテナにサイズを指定してメモリを共有する

ホストが他のOSであれば、コンテナ起動時の引数でコンテナに共有するメモリのサイズを指定できます。
ホストのOSに依存しないので、こちらがおすすめです。

docker run -it --shm-size=2gb [image]

docker-composeで指定する場合は、shm_size: 2gbを追記します。
容量は必要に応じて変更してください。

version: '3'
services:
    chrome:
        image: selenium/node-chrome-debug:3.141.59
        shm_size: 2gb

 

プログラミングカテゴリの最新記事