【问题标题】:How does scrapy behave when enough resources are not available当没有足够的资源可用时,scrapy 的行为如何
【发布时间】:2018-10-04 09:28:55
【问题描述】:

我正在使用命令行运行多个爬虫,这是一个自动化过程。

Python:2.7.12
Scrapy:1.4.0
操作系统:Ubuntu 16.04.4 LTS

我想知道scrapy是如何处理这种情况的

  1. 没有足够的内存/cpu 带宽来启动爬虫。
  2. scraper 运行期间内存/cpu 带宽不足。

我浏览了文档,但找不到任何东西。

任何回答此问题的人,您都不必知道正确答案,如果您能指出您知道的任何资源的大致方向,这将不胜感激

【问题讨论】:

  • 我们在这里讨论了多少个爬虫/网站?
  • 发生在我身上,如果服务器上没有足够的资源,Scrapy 进程就会被杀死
  • 在任何情况下大约有 32 个刮板

标签: python python-2.7 memory-management scrapy


【解决方案1】:

操作系统会终止任何试图访问超过限制的内存的进程。 也适用于 python 程序。 scrapy 也不例外。

带宽通常是抓取/抓取应用程序的瓶颈。

只有在您的应用程序中存在严重的内存泄漏时,内存才会成为瓶颈。

如果同一台机器上的多个进程共享 CPU,您的应用程序将会非常缓慢。

【讨论】:

  • 有没有办法处理这样的情况?
  • 扩展系统的基本规则:识别瓶颈,增加其资源以确保它不再是瓶颈。如果您的 ram 存在问题:您可以像这样垂直缩放它,获得更大的实例和更多的 ram。或者你可以水平扩展它:添加更多相同容量的实例,在它们之间分配工作。
  • 如果您选择水平扩展,您可以启动更多实例并配置一些蜘蛛在它们上运行,从而分担负载。一种策略可能是最大的蜘蛛获得自己的实例,而其余的则继续在单体系统上运行。此外,您可以选择取出数据库并在一个单独的实例上运行它,所有蜘蛛都与之连接。
猜你喜欢
  • 2019-06-21
  • 2019-03-12
  • 2021-06-02
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2021-05-17
相关资源
最近更新 更多