相信许多朋友在研究技术的时候,都会碰到各种各样的问题,最近小编在研究小程序、app开发的时候也遇到了,关于selenium grid分布式部署时,久而久之服务器会变得特别卡顿。
出现这种现象的征兆是:开启多个headless的浏览器都无法正常运行,无法访问网页,或者获取driver长时间阻塞,并且出现connection confuse的异常信息。
一开始笔者以为这可能是代理的原因,但是对着代码思来想去,小编也把代理这部分代码完全注释,最后排除了这种可能性。
后来实在没则,突然想到了通过top命令,查看了当前运行进程,发现有数十个web Content正在大摇大摆的进行着。于是小编终于醒悟过来,这可能是app小程序在运行过程中,存在异常情况,导致每一次firefox都无法正常关闭,所以进程越积越多,造成后面开启新浏览器都无法动弹了。
浏览器是特别吃CPU和内存的,这一点在平常台式电脑的使用中,就能发现。
为了解决这个问题,小编把代码更改的更加规范了,引入了数据库连接池和try、finally来保证浏览器必定关闭。
但其实这样也会存在一个漏洞,那就是小编在发布服务的时候,kill掉进程的时候,可能导致浏览器句柄没有正常释放。
所以只要多留意和杀死这些进程,就可以不重启服务器,保证小程序流畅进行啦~