我正在使用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和內存,還增加了更多的網絡帶寬。 –