RSeleniumが変なエラー吐いて落ちた! <- docker内の dev/shm の容量不足が原因だった件
鼻歌まじりにWEBクロールしていて、突如の悪魔の囁き...
Selenium message:unknown error: session deleted because of page crash from unknown error:
cannot determine loading status
Selenium message:unknown error: session deleted because of page crash from unknown error:
cannot determine loading status
げ、なんだよこれ。
変な書き方してたかな...とまずは自分を疑いコードを見直すも、
どこもおかしい所は無い。
【追記 2019/7/11】
まずは解決策
docker run -it --shm-size=1024m ...
docker run -it --shm-size=1024m ...
/dev/shm の容量が足りないこと、dockerのデフォルトが64MBであることが原因なので、
docker runの時に指定してあげるとどのホストOSでも動くと思います。(Macで確認)
Linux hostであれば下記の解決策、
"-v /dev/shm:/dev/shm" コンテナ内からホスト側の/dev/shm にマウントしてしまうのが一番メモリのムダが無いです。
以下は以前のバージョンです:
...えー...
てわけでエラーメッセージでググります:
これだ!
SO先生偉い!
unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium
原因としては
「dockerコンテナ内で起動すると、/dev/shm が凄く小さいので溢れて落ちることがある」
のだそうで。
ここでDebanjanBさんより示されている対策は3つ:
ホストの /dev/shm を使う - docker run に以下を追加
-v /dev/shm:/dev/shm
/dev/shm を大きくしてリマウント: コンテナ内から
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
chrome_optionsに以下のどちらかを追加:
# sandboxを無効に (あれ?すでにやってるけど)
chrome_options.add_argument('--no-sandbox')
# shm を無効に (遅くなるとのこと)
chrome_options.add_argument('--disable-dev-shm-usage')
-v /dev/shm:/dev/shm
sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
chrome_optionsに以下のどちらかを追加:
# sandboxを無効に (あれ?すでにやってるけど)
chrome_options.add_argument('--no-sandbox')
# shm を無効に (遅くなるとのこと)
chrome_options.add_argument('--disable-dev-shm-usage')
# sandboxを無効に (あれ?すでにやってるけど)
chrome_options.add_argument('--no-sandbox')
# shm を無効に (遅くなるとのこと)
chrome_options.add_argument('--disable-dev-shm-usage')
自分は -v /dev/shm:/dev/shm を足して起動する方法で解決しました!
(Linuxホストじゃないと使えないかも?)
逆に二番目はエラーで実行出来ませんでした。
3番めは試していません。
もし同じエラーで困った方が居たら参考になれば幸いです。
Author And Source
この問題について(RSeleniumが変なエラー吐いて落ちた! <- docker内の dev/shm の容量不足が原因だった件), 我々は、より多くの情報をここで見つけました https://qiita.com/taiyodayo/items/c477c2d77a5261b5f24a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .