解决百度蜘蛛爬行造成服务器负载过高问题

给客户一直在运营一个网站,刚开始的时候网站访问速度还不错、接近秒开。但随着时间长了以后发现网站速度越来越来、服务器的负载也越来越高。

打开服务器发现Mysql的CPU资源占用过高,分析原因是网站的并发太多,查看网站的访问日志,发现大多数百度蜘蛛在访问。网站一天的PV在15万次,百度蜘蛛的访问在一天200万次左右。这个数字真让我害怕,相当同时一秒访问人数20多人,我单台服务器,而且运算比较复杂,Mysql压力比较大,访问高了就会负载大。

由于网站无法静态化处理,只能采用其他方式。

通过google搜索可以通过Nginx设置访问速度来限制百度蜘蛛的抓取(超过限制返回503错误,通知百度蜘蛛下次抓取),但是效果不太好,百度站长工具反应抓取异常问题503错误太多,有可能会影响百度的排名。

再次分析优化,决定搞一台服务器单独给百度蜘蛛爬行,通过nginx设置如果是百度蜘蛛,就方向代理到另外一台服务器,此台服务器搭建了Mysql主从,不管百度蜘蛛如何爬行都不会影响主站的访问。

自此,百度蜘蛛的爬行问题得到一个好的解决方案,网站又回到了可以秒开的感觉。

PS: 试着来通过robots.txt来约束百度蜘蛛的访问频率,貌似没有好的效果,有好方案的欢迎留言。谢谢!

本文已经被查看852次

发表评论

电子邮件地址不会被公开。 必填项已用*标注