在一次用多進程加協程併發爬取數據的時候,發現mongodb服務器的CPU一下飆升到了100%,嚴重影響了併發爬取的速度。於是查了下,說是增加索引。我在程序了操作mongodb的代碼如下:
# 存在則更新,不存在則插入
await self._async_collection.update_one({'url_hash':self.url_hash},{"$set":data},True)
於是創建索引:
db.novels.createIndex({"url_hash":1})
CPU馬上降了下來。同時爬取速度明顯上去了,如下圖所示。
看來mongodb索引的威力還是挺大的。