我正在使用scrapy来刮擦多个站点和Scrapyd来运行蜘蛛。Scrapy蜘蛛在AWS EC2上运行时急剧减速
我写过7个蜘蛛,每个蜘蛛处理至少50个起始URL。我有大约7000个URL。每个蜘蛛的1000个URL。
当我开始在ScrapyD中放置作业时,每个作业有50个启动URL。最初,所有的蜘蛛反应良好,但突然他们开始工作非常缓慢。在localhost上运行它可以提供很高的性能。
虽然我在本地主机上运行Scrapyd,它给了我非常高的性能。当我在Scrapyd服务器上发布作业时。请求响应时间急剧减少。
每个起始URL响应时间是指在服务器上一段时间
设置看起来像这样经过很慢:
BOT_NAME = 'service_scraper'
SPIDER_MODULES = ['service_scraper.spiders']
NEWSPIDER_MODULE = 'service_scraper.spiders'
CONCURRENT_REQUESTS = 30
# DOWNLOAD_DELAY = 0
CONCURRENT_REQUESTS_PER_DOMAIN = 1000
ITEM_PIPELINES = {
'service_scraper.pipelines.MongoInsert': 300,
}
MONGO_URL="mongodb://xxxxx:yyyy"
EXTENSIONS = {'scrapy.contrib.feedexport.FeedExporter': None}
HTTPCACHE_ENABLED = True
我们试图改变CONCURRENT_REQUESTS
和CONCURRENT_REQUESTS_PER_DOMAIN
,但没有什么工作。我们已经在AWS EC2中托管了scrapyd。
您正在使用什么EC2实例类型?针对CPU和网络的CloudWatch指标是什么样的? –
我正在使用t2-small实例。最大CPU利用率为60%。网络最大为1,500,000。最大网络数为1,500,000。 –
您是否考虑过使用更大的实例类型?它不仅增加了CPU和内存,还增加了更多的网络带宽。 –