我们公司使用Selenium Grid已经有两年的时间,今年中开始由我们来维护我们公司的Selenium Grid。这个Grid规模挺大的,有七八十台机器,有全球各地的用户在上面运行Web的自动化测试。用户数量众多,Test Case也很多。然而Selenium Grid并没有那么给力,有时候会莫名其妙的Down掉。一开始我们每天重启一次服务,相对稳定。然而后来连一天里面都会出现这种情况。
为了解决这个问题,我痛下决心,开始漫长的调试之旅。网上相关的资料几乎没有,我也摸索了很长时间,下面记录下来跟大家分享一下。
首先,建立压力测试的环境,请参考http://shijunjuan.iteye.com/admin/blogs/1997768
然后,建立Selenium Grid的调试环境,请参考http://shijunjuan.iteye.com/admin/blogs/1997764 以调试方式启动GridLauncher
因为之前已经阅读过Selenium Grid的代码,对它的代码有一定的了解,所以没有进行更多的调试,直接开始压力测试。启动jvisualvm来监视Hub的内存和线程情况。
重现问题后,Hub hang了,在Eclipse里面Suspend 线程进行调试,查看Stack,看看卡在哪里了。也可以通过jvisualvm的ThreadDump