美文网首页
selenium docker容器中浏览器闪退的问题

selenium docker容器中浏览器闪退的问题

作者: Ivanlfli | 来源:发表于2018-12-11 10:40 被阅读0次

    昨天在用selenium docker时,遇到一个莫名其妙的问题,火狐浏览器61.0.1被打开后,过2s左右就闪退,看日志报下面的问题:

    A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down
    

    网上各种搜答案,发现这是火狐的一个bug,目前貌似还是没有解决掉。有人在https://github.com/mozilla/geckodriver/issues/1068里提出如下方法可以解决浏览器闪退的问题:

    image.png
    我试了下,还是解决不了。然后再搜,在https://github.com/mozilla/geckodriver/issues/1193中发现了解决方法:
    image.png
    看到他在启动容器的时候,设置了shm的大小,再进入下面火狐浏览器bug的链接:

    看到说这个问题已经解决,并且在selenium docs中已经说明了。这时候我再去docker selenium的github上看,果然readme中已经写了shm的设置问题:
    image.png
    官网建议启动chrome和firefox镜像的时候,将宿主机的shm挂在到容器里,或者设置容器的shm大小为2g,这里容器的shm实际上是使用宿主机的shm。下面官网也说了,2g的大小只是经验值,设定这个值的时候,浏览器不会出现问题,也可以自定义该值。

    那shm是啥?https://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html 里对shm做了介绍,概括的讲,/dev/shm属于共享内存的概念,属于tmpfs类型,tmpfs是一个内存系统,所以,所有在/dev/shm中的文件都是存储在内存中,而不是在硬盘上。使用/dev/shm的好处就是提升运行速度。

    那为啥设置了shm,容器中的浏览器才不崩溃呢?
    点进官方给出的chrome和firefox的bug链接,发现大家也是猜测,因为docker容器默认的shm是64m,可能是浏览器需求的shm比64m大,导致没有足够的内存空间给浏览器新建文件了,所以浏览器会闪退。


    image.png
    image.png

    相关文章

      网友评论

          本文标题:selenium docker容器中浏览器闪退的问题

          本文链接:https://www.haomeiwen.com/subject/lxkshqtx.html