我正在使用 API(让我们假设它是 facebook)来收集两个给定日期之间的数据。由于 API 限制(像大多数一样),我一次只能抓取这么多,因此必须对结果进行分页。
这是我的问题/问题..是否更好
我正在运行一个 4GB 的云服务器实例..
我正在查看的数据是 XML 格式,包含大约 20k 条目。每个条目中可能还包含另外 20 个标签。一旦完全拉下来,数据最终约为 10MB。.我的问题是当我的服务器访问 api 时,收集此信息时 CPU 和内存峰值几乎达到 100%。我尝试过一次检索 500 个,一次检索 1000 个,一次检索 5000 个..这是我需要一次收集 20 个的东西吗..还是还有其他我应该看的东西?
我不知道还需要提供什么,如果有什么我可以提供的,请告诉我
根据答案进行更新
编辑[以帮助人们以后遇到这个问题] 我从 Hpricot 切换到 Nokogiri,速度快得多。 另外,我正在内存中构建一个 XML 文件,显然这是一项非常繁重且非常耗时的任务。通过修复这两件事,我将此操作从大约 10 分钟缩短到了 1 分钟多一点。
这里列出了一些需要注意的事项:
您需要问的问题是为什么您的 CPU+ 内存会出现峰值? 4GB 足以处理这些数据,那么您的代码是否针对处理此任务进行了优化?如果没有,你能做什么?
你的代码优化得足够多吗?很公平。您现在可以使用 C 扩展重写它们。
优化代码后,我建议“稍后”检查处理这些数据,就像延迟作业一样。这样您就不会阻塞整个数据集,这可能会给您的服务器带来压力。
您还提到您正在运行云服务器,我可以假设您可以访问更多虚拟机。您可以并行处理这些数据,以减少每台机器的压力。