【问题标题】:Requestlist throws heap out of memory in apify for more than 10 million wordlistRequestlist 在 apify 中为超过 1000 万个 wordlist 抛出堆内存不足
【发布时间】:2021-05-07 05:57:10
【问题描述】:

我有一个包含 11 个字符的单词表,我想将它附加到一个 url 中。在 request.js 中进行一些修改后,我能够在 requestlist 数组中运行 500 万大小的 wordlist。它开始抛出 JavaScript 堆内存错误。我有数十亿大小的 wordlist 需要处理。我可以使用 js 代码生成我的单词表。由于我拥有更高的服务器容量,我在一小时内完成了 500 万个条目。 Requestlist 是一个静态变量,所以我不能在其中再次添加。我怎样才能无限地运行它以进行数十亿的组合。如果任何 cron 脚本可以提供帮助,那么我也对此持开放态度。

【问题讨论】:

  • 我认为RequestList 会将所有内容加载到内存中,因此根据可用内存,它可能不会针对那么多记录进行优化。你用多少内存来运行这个演员?是否可以将输入列表拆分为更小的块,然后可以独立处理并可能在之后再次重新合并?

标签: node.js shell web-scraping cron apify


【解决方案1】:

对于如此大量的请求,最好使用RequestQueue。队列作为 SQLite 数据库持久保存到磁盘,因此内存使用不是问题。

我建议将假设 1000 个请求添加到队列中并立即开始抓取,同时将更多请求推送到队列中。将数千万或数十亿个请求排入队列可能需要很长时间,但您无需等待。

为获得最佳性能,请使用apify 版本1.0.0 或更高版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多