我正在使用scrapy從多個不同的域並行下載頁面。我有數十萬頁的下載,所以表現很重要。如何提高scrapy的下載速度?
不幸的是,由於我介紹了scrapy的速度,我只得到了每秒幾頁。真的,平均每秒約2頁。我以前寫過我自己的多線程蜘蛛,每秒處理數百頁 - 我確信scrapy使用的扭曲等將會具有類似的魔力。
如何加快scrapy的速度?我非常喜歡這個框架,但是這個性能問題對我來說可能是一個破壞行爲。
以下是settings.py文件的相關部分。我錯過了一些重要的設置嗎?
LOG_ENABLED = False
CONCURRENT_REQUESTS = 100
CONCURRENT_REQUESTS_PER_IP = 8
幾個參數:
- 使用scrapy版本0.14
- 該項目部署在EC2大的情況下,所以應該有足夠的內存,CPU和帶寬一起玩。
- 我使用JSON協議調度爬網,在任何給定時間保持抓取程序已滿幾十個併發抓取。
- 正如我剛開始所說的,我從很多站點下載頁面,所以遠程服務器性能和CONCURRENT_REQUESTS_PER_IP不應該是一個擔心。
- 目前,我只做了很少的後處理。沒有xpath;沒有正則表達式;我只是爲每個頁面保存網址和一些基本統計數據。 (一旦我得到的基本性能扭結制定這將在以後更改。)
Scrapy的確運行速度更快。它是CPU綁定還是顯示空閒?它從一開始就很慢,還是性能下降? –
從一開始就很慢。 AWS顯示機器運行在100%的CPU,但我認爲這個扭曲的反應堆總是這樣做。該機器仍然敏捷,並且對SSH命令,新的HTTP請求等作出了響應。 – Abe
在最後一個小時處理此問題,我有一個預感,問題在於用於scanneryd的服務配置文件。我已經開始了一個關於重新啓動scrapy守護進程的單獨問題:http://stackoverflow.com/questions/12428143/how-do-i-restart-the-scrapyd-daemon – Abe