在一次用多进程加协程并发爬取数据的时候,发现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索引的威力还是挺大的。