selenium docker容器中瀏覽器閃退的問題

昨天在用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裏提出如下方法可以解決瀏覽器閃退的問題:


我試了下,還是解決不了。然後再搜,在https://github.com/mozilla/geckodriver/issues/1193中發現瞭解決方法:

看到他在啓動容器的時候,設置了shm的大小,再進入下面火狐瀏覽器bug的鏈接:

看到說這個問題已經解決,並且在selenium docs中已經說明了。這時候我再去docker selenium的github上看,果然readme中已經寫了shm的設置問題:

官網建議啓動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大,導致沒有足夠的內存空間給瀏覽器新建文件了,所以瀏覽器會閃退。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章