去年我接了一个电商客户的需求,要爬取京东、淘宝、拼多多三个平台的3C类商品数据,一共12个大类,预计数据量是300万条,要求3天内完成,而且每天要更新一次价格和库存数据。最开始我用之前的3节点Scrapy-Redis集群跑,每小时只能爬1.2万条,3天根本完不成300万,而且价格更新的实时性也达不到要求。后来我花了2天时间对整个集群做了全方位的性能调优,最后10台节点的集群每小时可以爬5万条数据,300万条2天半就爬完了,而且增量更新每小时可以跑20万条,完全满足客户的需求。这篇文章我就把整个调优过程完整分享出来,从单机瓶颈分析,到分布式架构优化,再到具体的调优步骤,全部是实战干货,看完你也能把你的爬虫性能提升几倍。一、单机爬虫的性能瓶颈分析很多人做爬虫的时候,一上来就堆机器,但是根本不知道瓶颈在哪里,最后钱花了不少,性能却没提升多少。我先给你分析下单机爬虫的几个核心瓶颈,只有找到瓶颈才能针对性优化。1.1 单机爬虫的四大瓶颈我做过测试,一台4核8G的服务器,跑单机Scrapy爬虫,理想状态下最高的爬取速度大概是每小时5000条左右,再往上就很难了,主要是四个瓶颈:网络带宽瓶颈:普通云服务器的公网带宽一般是1-5M,就算你开100M带宽,很多网站也会对你的单IP做限速,你请求太快直接就封IPCPU瓶颈:网页解析、数据提取、反爬验证(比如验证码识别)都需要CPU资源,并发开太高的话CPU直接跑满,响应速度会变慢内存瓶颈:单机Scrap