java - 如何使用 Selenium 在 Heroku 上避免“进程运行 mem=544M(100.3%)”
问题描述
我正在尝试开发一个需要进行网络抓取的应用程序。这是一个复杂的抓取,所以我需要一个强大的工具,比如 Selenium。
我遇到的问题是,经过几次通话后,我开始出现错误:
Process running mem=544M(100.3%)
我当时尝试的是:
- 将JVM的启动和最大内存设置为64m!(是的,我的应用程序不需要太多内存,但什么也没做)。通过以下尝试,此选项也保持活动状态。
- 在每次使用时创建和退出 WebDriver (Chrome):它似乎可以工作,但它基本上没用,因为它需要 2 秒才能检索一个实例(糟糕的解决方案)
- 在异步中汇集一些实例只是为了避免那 2 秒:在 3 个实例之后,应用程序无法创建新实例并出现错误,例如缺少文件等等等等……无论如何,由于抓取,我每次都需要做很多事情如果我可以多次使用同一个 WebDriver,我可以避免
- 创建 WebDriver 的包装器,
quit
并在多次使用后重新创建包装器:20 分钟后错误再次出现
我想知道是否有替代 2 的解决方案。
我读了很多答案说你需要quit
/ close
,但我只打开一个窗口,重复使用它比每次我必须创建一个新实例更有效做点什么……你有什么建议吗?
技术数据:
- 爪哇 11
- 硒 3.141.59
- Heroku 免费层
解决方案
推荐阅读
- javascript - 如果我从数据库中删除,如何从地图中删除标记
- python - 如何使用 PyCharm 查看 SQLite 数据库中的哪些数据?
- python - 无法用日期填写两个输入框
- python - 协程中的异步任务
- .net - 不支持 DataContract 中的非映射字段
- apache-spark - Spark 流式加入 Kafka 主题对比
- java - java.lang.UnsupportedOperationException at java.nio.ByteBuffer.arrayOffset?
- laravel - 如果我将它保存在 laravel 的一个字段中的数组中,如何搜索单个 id?
- python - 打印字符串,而不是字符数
- javascript - Kendo UI & Javascript - 添加新记录时未获取数据