Java / Scala Selenium似乎泄漏内存

时间:2016-10-06 16:08:18

标签: java scala selenium proxy

我正在尝试在Linux中创建一个稳定的系统,以便在Scala / Java中进行一些采集以构建数据库,进行分析;等等使用Selenium 3 beta 4.我看到我的进程在1000次左右运行后意外死亡,或者变得非常慢以至于使用xvfb几乎无法工作。如下所示,似乎没有堆空间问题。是否有一个我在Google和Github上找不到的已知问题,Gecko Driver中有哪些漏洞?我正在使用Firefox 49和GeckoDriver 10.在单独的线程中运行多个具有不同代理的浏览器是否存在问题?如何在单个系统上维护每个浏览器实例和多个线程的代理时解决此问题?我是否需要Linux容器才能完成此任务?

我检查了我的内存使用情况,但它低于2 GB。我将xmx设置为4g。 CPU使用率为75%。我对代理支持的需求消除了使用网格等工具的能力。我需要旋转代理,而不是在每个实例的1个代理上添加极端程度的复杂性,并尽可能统一使用。

Java的速度提升是不可忽视的,因为我能够非常快速地使用线程执行相当不错的ETL。当与Apache Http异步客户端池结合使用时,我可以在2NF形式中获得数千条记录,并在几小时内进行一些标准化,而不是使用Python进行一两天。我尝试在FX中构建一个浏览器,但是一个基于Oracle的“次要”内存泄漏与目标解决方案似乎在Java 9中与媒体句柄有关,在20-25页之后会导致该过程失效。实际上我有时需要处理媒体。

我在Capabilities和FirefoxProfile中设置设置:

fp = new FirefoxProfile(path)

我的个人资料设置如下:

fp.setPreference("app.update.auto",false)
fp.setPreference("app.update.enabled",false)
fp.setPreference("app.update.silent",true)
fp.setPreference("xpinstall.customConfirmationUI",false)
fp.setPreference("extensions.updates.enabled",false)
fp.setPreference("extensions.update.autoUpdateDefault",false)
fp.setPreference("extensions.update.enabled",false)
fp.setPreference("datareporting.policy.dataSubmissionEnabled",false)
fp.setPreference("datareporting.healthreport.uploadEnabled",false)

我的代理设置(每个浏览器1个)使用以下代码设置:

fp.setPreference("network.proxy.type",1)
fp.setPreference("network.proxy.http",proxyHost)
fp.setPreference("network.proxy.http_port",proxyPort)
fp.setPreference("network.proxy.ssl",proxyHost)
fp.setPreference("network.proxy.ssl_port",proxyPort)
fp.setPreference("network.proxy.socks",proxyHost)
fp.setPreference("netowrk.proxy.socks_port",proxyPort)

0 个答案:

没有答案