搜索引擎, 请手下留情

     今天凌晨1点左右, 在进行一个晚上的性能优化后,准备睡觉时, 我突然想:这么晚了,看还有哪些忠实的用户在访问博客园?打开性能监视器,Current Connections竟然有200-300, 高的时候会达到400左右,这么晚了还有这么多用户,我有点怀疑,是不是有什么软件不停地在爬网站的数据, 而且Current Connections一直在200以上,有必要记录一下这些访问来自何方?
     连续一个多星期的奋战已经让我很累,真想早点睡觉,明天再说。可是如果明天白天进行处理,会对网站的运行带来更大的影响,而且网站的性能问题一定要尽快解决,不能再拖下去了。这时,我心里已经在猜测搜索引擎可能是很大的嫌疑对象。
     于是,我打起精神,写了点代码,记录所有访问博客园的客户端IP地址及UserAgent。在记录的过程中,我就发现果然有搜索引擎在不停地访问博客园,进行了半小时的记录后,我对记录数据进行了分析,大家先看看数据:
     测试时间:1:05-1:35
     最大访问来自(UserAgent):sohu agent
     访问次数:8439
     平均每分钟访问次数:287

     好狠的搜索引擎!在肆无忌惮地爬博客园的数据,难怪这么晚还有那么多链接。如果它整天都在这样爬博客园的数据, 那对网站的性能会带来很大的影响,它也许是博客园最近性能问题的凶手之一。没办法,为了网站性能,只能对这样的搜索引擎说“不”,我立即修改代码,拒绝了这个爬虫(sohu agent)! 效果要到早上上班才能看出来。
      今天早上,为了防止还有其他疯狂的爬虫,我又对网站访问进行了记录,对记录数据进行分析后又发现了一个疯狂的爬虫:

     测试时间:7:19-7:30
     最大访问来自(UserAgent): Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)         
     访问次数:2906
     平均每分钟访问次数:264

     继续对它说“不”,拒绝它对博客园的访问。
     你可能要问:Google是 爬虫的情况怎么样?在记录数据中,Google排名第二,但访问次数不多,只有459, 少好几倍。
     虽然这样的分析数据不全面,但对于搜索引擎来说,这样疯狂爬一个网站的数据是不妥的。当它在疯狂地吸取一个网站的数据时,是否考虑会给对方造成影响。Google网站上有这样的说明:“对大多数网站来说,Googlebot 的平均访问频率不会高于数秒钟一次。” 看来Google还是考虑到这个问题了。而发现的这两个疯狂的爬虫,竟然达到了4次/秒。如果它们不停地这样访问一个网站,一般网站的性能会很受影响。看来,博客园最近的性能问题的罪魁祸首可能就是它们了。
     拒绝了这两个爬虫(sohu agent与Yahoo! Slurp) 对博客园的访问后,从早上到现在的网站运行情况看,网站性能有了明显的提高,CPU占用明显降下来,平均只有50%, 前几天,CPU占用率几乎就是一条直线。
     现在,垃圾广告、垃圾邮件是互联网很头疼的问题,也许以后“垃圾爬虫”也会加入它们的行列。  
     博客园的性能问题是否能真正解决,还要看今天一天网站的运行情况,希望今天晚上能睡个好觉。 

posted on 2005-10-27 10:33 dudu 阅读(4000) 评论(79)  编辑 收藏 网摘

评论

#1楼  2005-10-27 10:46 郑彬 [未注册用户]

通过防火墙、iis、还是asp.net程序里面进行的?   回复  引用    

#2楼  2005-10-27 10:47 深渊野鱼      

dudu辛苦了:)
cnblogs已经成为我们的精神家园,一定要保护我们的家园。:)
  回复  引用  查看    

#3楼 [楼主] 2005-10-27 10:51 dudu      

@郑彬
在程序中进行的。
@深渊野鱼
我一定会好好地保护!
  回复  引用  查看    

#4楼  2005-10-27 10:53 idior      

估计这个是目前的主要影响之一。   回复  引用  查看    

#5楼  2005-10-27 10:55 马维峰      

这个爬虫这么厉害,没有想到。   回复  引用  查看    

#6楼  2005-10-27 11:02 被遗弃的小指      

有一个建议,在目前的很多论坛里面有一种机制,就是不允许某一个连接在很短的时间内反复打开本论坛中的页面,哪怕是不同的页面也不允许,这种方式基本上可以限制一些搜索引擎的爬虫。
不过这种做法也有弊端,因为得要维护一个当前的连接的列表(session,时间,访问的页面等等),这也是一个负担。。。。。
dudu看看能否参照这个思路来控制一下?
  回复  引用  查看    

#7楼  2005-10-27 11:13 biduan [未注册用户]

google的爬虫一般不只一个

我曾经再一个站点记录每天的访问量,发现google抓取页面的爬虫(不同IP数目)最多,MS,Baidu也有
不过那个网站访问量没有博客圆那么大,影响不是很明显
  回复  引用    

#8楼 [楼主] 2005-10-27 11:24 dudu      

@被遗弃的小指
谢谢你的建议!
  回复  引用  查看    

#9楼  2005-10-27 11:27 Duiker      

我申请了一个站点技术器,可以分析每天访问我的站点的链接,大多数都是BaiDu和Google的,这个分析是分析duiker.cnblogs.com,我自己二级域名的,所以我认为根本原因就在这个二级域名上.

因为每个用户都有自己的二级域名,而且很多都在Google或者BaiDu上进行了注册,以提高自己Blog的知名度,因此,Google等爬虫不仅要爬主域名,而且还要爬目前10000多个二级域名,这样目前服务器的负载就可想而知了,因此,目前拒绝访问不是好的办法,而是如果避免google爬二级域名才是正道,其实目前的情况我想Google也是不想的,二级域名还是少爬最好,所以我想这才是根本原因呀。
  回复  引用  查看    

#10楼 [楼主] 2005-10-27 11:29 dudu      

今天上午记录了博客园的访问情况(不包含两个拒绝的爬虫,UserAgent不为空):
时间段: 2005-10-27 7:19:48 ~ 2005-10-27 10:37:05
访问次数: 333179
  回复  引用  查看    

#11楼  2005-10-27 11:31 老翅寒暑      

我觉得是一个双刃剑,拒绝搜索引擎固然会提高速度,但是妨碍了大家使用高品质的查询服务。dudu可以折中一下,考虑限制而不是拒绝搜索爬虫。

1。通过分析得到访问的高峰时间,高峰时间可以限制搜索爬虫的访问速率,比如1次每秒,在访问低峰时间可以考虑完全放开爬虫的访问。通过相关加权算法来进行判断。
2。对于google,baidu,yahoo等用户量大的,可以限制,除此之外的可以考虑拒绝,或者权值更低。
3。拒绝信息的处理,不要返回404页面不存在这种类型的错误,返回的错误类型应该是“页面忙,请稍候访问”,这样搜索爬虫应该会有相应的处理机制的。
  回复  引用  查看    

#12楼 [楼主] 2005-10-27 11:33 dudu      

@Duiker
没有拒绝Google啊! 从目前看, Google的爬网没给性能带来多大的影响。
从Google网站说明上看,Google爬网时会注意不在很短的时间内进行大量的访问。
  回复  引用  查看    

#13楼  2005-10-27 11:34 ccBoy      

几年前大家都想自己的网站被Google,Baidu访问和做到索引中,现在有了明显的变化:)

  回复  引用  查看    

#14楼  2005-10-27 11:38 lovebanyi [未注册用户]

Dudu 用这个了吗
robots 添加这个就行了.这样比较方便
  回复  引用    

#15楼  2005-10-27 11:40 乖狗狗      

强烈支持dudu
跟着dudu真的学到了很多东西
  回复  引用  查看    

#16楼 [楼主] 2005-10-27 11:43 dudu      

@老翅寒暑
谢谢你的建议。
拒绝搜索爬虫是采取的临时解决方法。
可以只在访问的高峰期拒绝搜索爬虫。
目前拒绝时,只是终止请求, 返回的是空页面, 应该返回“页面忙,请稍候访问”比较好, 但不知这个错误的代码是什么?
要是robots.txt能自定义爬虫的访问频繁就好了。
希望大家提更多的建议, 找到真正解决爬虫问题的方法。
  回复  引用  查看    

#17楼  2005-10-27 11:47 faqi [未注册用户]

物极必反,也不知google、baidu等是否考虑过,如果大家都拒绝了他们,他们还有存在的意义吗   回复  引用    

#18楼 [楼主] 2005-10-27 11:47 dudu      

@lovebanyi
如果在robots.txt中定义, 会拒绝几乎所有的搜索引擎。
现在只是要描绘不规距的爬虫。
  回复  引用  查看    

#19楼  2005-10-27 11:51 多等 [未注册用户]

毕竟dudu是私人架设得服务器...

若是企业,公司,一般是整套上线的...

硬件防火墙,vlan配置,服务器群集...等等.

想提升分析,程序仅仅是一方面
  回复  引用    

#20楼  2005-10-27 11:56 gyf19 [未注册用户]

dudu辛苦了:)
真是人怕出名,猪怕壮,网站也是一样。
  回复  引用    

#21楼  2005-10-27 12:00 pcvc      

难怪早上速度这么快,高兴!   回复  引用  查看    

#22楼  2005-10-27 12:07 wssmax      

现在该是我们出手的时候了.
大家都想想办法.多提意见啊.
  回复  引用  查看    

#23楼  2005-10-27 13:07 乖狗狗      

现在Blog的速度非常快,感谢dudu   回复  引用  查看    

#24楼  2005-10-27 13:20 横渡      

拒绝搜索引擎的搜索不就得了。
大家要搜就到BLOG里搜(自己做个)。^o^反正又不以访问量和广告代理来赚钱的!
  回复  引用  查看    

#25楼  2005-10-27 13:37 oop80      

今天非常非常的正常,看来是搜索引擎的问题了。   回复  引用  查看    

#26楼  2005-10-27 13:37 wddavid      

dudu

小弟报告一下,现在比较长的评论不能浏览了,点击“浏览全文”也无法看到……
  回复  引用  查看    

#27楼 [楼主] 2005-10-27 13:43 dudu      

@wddavid
哪篇文章?
  回复  引用  查看    

#28楼  2005-10-27 13:48 Tony Qu      

可以考虑些一个Robot协议文件,放在网站根目录下,据说搜索引擎都遵守该协议   回复  引用  查看    

#29楼  2005-10-27 13:50 想学 [未注册用户]

DUDU是通过程序的方式来拒绝网络爬虫的吧?
我想请教一下你是怎么样来拒绝的????写一两句代码看看好吗??嘻`~~
  回复  引用    

#30楼  2005-10-27 13:53 疾风      

dudu真是辛苦啦,谢谢   回复  引用  查看    

#31楼 [楼主] 2005-10-27 13:59 dudu      

@想学
在Global.cs中
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if(是拒绝的爬虫)
{
Context.ApplicationInstance.CompleteRequest();
}
}
  回复  引用  查看    

#32楼 [楼主] 2005-10-27 14:01 dudu      

@Tony Qu
robots文件对所有搜索引擎有效, 我只想拒绝会带来性能问题的搜索引擎。
  回复  引用  查看    

#33楼  2005-10-27 14:11 不知道这样行不行 [未注册用户]

在Global.cs中
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if(request == robot协议)
{
if(不是需拒绝的爬虫)
{
Context.ApplicationInstance.CompleteRequest();
}
else
{
传送
}
}
}
  回复  引用    

#34楼  2005-10-27 14:21 垃圾猪      

说不定真的是因为二级域名的原因,不过不管怎么样比CSDN的稳定多了   回复  引用  查看    

#35楼  2005-10-27 14:38 DingBing [未注册用户]

robots文件中可以指定不允许特定的User-agent检索的   回复  引用    

#36楼  2005-10-27 14:51 宇文拓      

哈,dudu辛苦了,没想到还有这些影响性能的因素   回复  引用  查看    

#37楼 [楼主] 2005-10-27 14:59 dudu      

@DingBing
嗯, 可以的, 刚才从博客园的一篇文章中看到的: http://www.cnblogs.com/babyblue/archive/2004/03/07/2399.aspx

我担心有些爬虫不理会robot文件。
采用程序控制更灵活, 我可以在某段时间拒绝, 某段时间允许。
  回复  引用  查看    

#38楼 [楼主] 2005-10-27 15:12 dudu      

@不知道这样行不行
"request == robot协议",这样怎么比较?

@垃圾猪
如果是二级域名的问题, 那么Google与百度在爬网时怎么没引起这个问题呢?
  回复  引用  查看    

#39楼  2005-10-27 15:31 KKKKK [未注册用户]

dudu 辛苦了!!

dudu,能不能请教一下用什么工具可以监视到爬虫??
  回复  引用    

#40楼 [楼主] 2005-10-27 15:41 dudu      

@KKKKK
“写了点代码,记录所有访问博客园的客户端IP地址及UserAgent”。
  回复  引用  查看    

#41楼  2005-10-27 16:04 KKKKK [未注册用户]

谢谢dudu   回复  引用    

#42楼 [楼主] 2005-10-27 16:08 dudu      

看着性能监视器中CPU漂亮的曲线, 好开心!
那恼人的直线曾经困扰了我一个多星期,为它愁眉苦脸、为它废寝忘食,现在终于战胜了它, 感觉浑身的轻松。
  回复  引用  查看    

#43楼  2005-10-27 16:19 wddavid      

@dudu老大

这个:
http://wddavid.cnblogs.com/archive/2005/10/25/257047.html

我写的每一章的心得,现在都看不到了啊,55555
  回复  引用  查看    

#44楼  2005-10-27 16:20 小M [未注册用户]

哈...DUDU好棒...   回复  引用    

#45楼  2005-10-27 16:21 pcvc      

你开心我们也高兴呀^_^   回复  引用  查看    

#46楼 [楼主] 2005-10-27 16:28 dudu      

@wddavid
该问题会在晚上更新程序之后解决。
  回复  引用  查看    

#47楼  2005-10-27 16:31 122 [未注册用户]

老大,没有了google你让我怎么活?
我自己搜索资料都是用google的站内搜索的功能
你禁用了它,咋找cnblogs里面的资料?
还往三思呀!!!!

  回复  引用    

#48楼 [楼主] 2005-10-27 16:45 dudu      

@122
晕!我没拒绝google啊!
  回复  引用  查看    

#49楼  2005-10-27 17:28 七匹狼111 [未注册用户]

dudu 你好,

你那个拒绝爬虫的代码是怎么写的,能贴出来么?谢谢!
  回复  引用    

#50楼  2005-10-27 17:33 Web Hosting Review [未注册用户]

robot文件搜索引擎一般都会处理的。但爬得这么狠,会不会是有人采集而冒充爬虫?   回复  引用    

#51楼 [楼主] 2005-10-27 20:26 dudu      

@wddavid
你所发现的问题已经解决。
@七匹狼111
评论中有。
@Web Hosting Review
有这个可能,所以至少在访问高峰期拒绝它。
  回复  引用  查看    

#52楼  2005-10-27 21:58 hunanlion [未注册用户]

谢谢dudu 前两天我都有点郁闷 觉得人太多 打开页面也慢 现在好多拉
谢谢拉
真的应该保证广大网民的利益 真的我觉得他们太过分拉
  回复  引用    

#53楼  2005-10-27 22:08 wddavid      

dudu, thanks, 偶爱你
 
但是好像还有个一直都存在的问题啊,就是在评论中 插入代码 常常会没有那种代码格式出来。比如在这个帖子里回复用高级评论插入代码就和输入一样,不成……
dudu不好意思,一直提问题,不过一直困扰很久了……
  回复  引用  查看    

#54楼  2005-10-27 22:12 猪头      

拒绝不是办法吧?如果你拒绝了,那么就无法在google/baidu里搜索cnblogs里的好文章了!!!!
想点别的办法~~~~~~~辛苦了~~~~~~~~
  回复  引用  查看    

#55楼  2005-10-27 22:15 猪头      

现在通过google/baidu可以找到好多BLOGS的文章,如果拒绝了,那怎么办????

http://www.google.com/search?q=RequiredFieldValidator%20&hl=zh-CN&lr=&oe=GB2312&newwindow=1&domains=cnblogs.com&sitesearch=cnblogs.com&start=10&sa=N
  回复  引用  查看    

#56楼  2005-10-27 23:10 REvol [未注册用户]

原来如此!真是恍然大悟啊。
有点牛顿被苹果砸到的刹那感觉。呵呵。
  回复  引用    

#57楼  2005-10-28 08:31 难得一蠢      

http://www.6mj.com/net/2004-2/2004221214913.htm 看看这个文章..介绍的比较详细..

用Robots META标签限制某些页面的提取也是解决问题的一个办法..爬虫是按照链接一步一步爬下去的..我们可以在链接的页面中加入Robots Meta标签..在第二个页面拦截下来..

另外可以根据当前的系统时间,写入这些Robots Meta标签..以上是我的想法..没有测试过,不知道行不行..
  回复  引用  查看    

#58楼  2005-10-28 08:33 god [未注册用户]

我们再想办法,不过不管是baidu还是google是不能够拒绝的,现在cnblogs访问量大,几乎没分钟都有新的文章,谁都不可能一直关注cnblogs发表什么新文章
如果禁用baidu/google,就没有办法查找新的文章
或者,我们自己做一个cnblogs站内搜索引擎
  回复  引用    

#59楼  2005-10-28 08:43 jackei      

dudu辛苦了,我们支持你!   回复  引用  查看    

#60楼  2005-10-28 09:06 T_98Dsky       

@猪头
@god
晕呀!dudu都说了不是拒绝 baidu和google了!
  回复  引用  查看    

#61楼 [楼主] 2005-10-28 09:10 dudu      

@猪头
@god
我真的很晕!文章中不是清楚地写着: “拒绝了这两个爬虫(sohu agent与Yahoo! Slurp) ”, 而且这两个爬虫只是在访问高峰期拒绝。
  回复  引用  查看    

#62楼  2005-10-28 09:10 gloser      

如果拒绝搜索引擎,很多cnblogs个人博客的访问量就会少很多,   回复  引用  查看    

#63楼  2005-10-28 09:50 fffly [未注册用户]

我想问问:
搜索引擎爬数据,应该是爬更新的数据吧,总不会定期把整个网站都爬一遍吧?
  回复  引用    

#64楼  2005-10-28 09:59 小峰 [未注册用户]

robots.txt是可以针对每个搜索引擎定制规则的,至于搜索引擎是否遵守就不知道了,好象baidu就不遵守,

我们公司网站来源最大的bot是baidu,
  回复  引用    

#65楼 [楼主] 2005-10-28 21:09 dudu      

@wddavid
在高级评论中插入代码的问题, 我会尽快解决。
  回复  引用  查看    

#66楼  2005-10-29 04:38 卡卡.net      

呵呵,我都是晚上来园子里,白天根本打不开呀
拒绝搜索引擎也不是长久之计策,咱们的园子越来越壮大了,dudu可以学习一下大型网络的经验,看看他们是如果处理这些问题的。
  回复  引用  查看    

#67楼  2005-10-29 19:25 活靶子 [未注册用户]

robots.txt中也可以按照爬虫的名字来禁止
其实博客园留下google和baidu的爬虫 就可以了
还有可以制作googleSiteMap 让 google 来订阅博客园
那么它只爬新的内容
  回复  引用    

#68楼 [楼主] 2005-10-29 19:29 dudu      

@活靶子
谢谢你的建议!
  回复  引用  查看    

#69楼  2005-10-31 20:23 小峰 [未注册用户]

PingBack:垃圾邮件就是这么产生的
垃圾邮件地址收集器,搜索引擎的数据抓取,可能给服务器带来很大的压力,
http://blog.codelphi.com/ayeel/archive/2005/10/31/90382.aspx
  回复  引用    

#70楼  2005-11-09 11:32 Dragonpro      

谢谢Dudu

现在网络正常得很,辛苦了~~
  回复  引用  查看    

#71楼  2005-11-11 14:00 寒带鱼      

dudu辛苦   回复  引用  查看    

#72楼  2005-11-14 05:18 小猪娇 [未注册用户]

博客不会被他们打倒的   回复  引用    

#73楼  2005-12-03 19:54 小小 [未注册用户]

很多爬虫的效率很低,我都不知道他们到底是干什么的,他们爬了半天对我的站 一点帮助都没有   回复  引用    

#74楼  2005-12-26 00:30 xili [未注册用户]

dudu:

robot有专门的协议吗?

(request == robot协议 ) 具体含义是什么?
  回复  引用    

#75楼 [楼主] 2005-12-26 09:09 dudu      

@xili
请去搜索相关资料。
  回复  引用  查看    

#76楼  2006-03-21 08:58 zkxp      

举得半夜三更的爬好像不因该有影响的吧。   回复  引用  查看    

#77楼  2006-06-08 23:50 随意 [未注册用户]

to:xili 我想应该是

if Request.ServerVariables("HTTP_USER_AGENT").tolower.indexof("googlebot")>-1 then
'它是google
end if
  回复  引用    

#78楼  2006-08-07 16:24 阿星      

原来爬虫是这个东西啊,这还真是个问题啊   回复  引用  查看    

#79楼  2008-01-30 14:32 ytzong      

做个站内搜索吧,GOOGLE的不能排序啊   回复  引用  查看    


发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接:
 

导航

公告

人生的真正价值在于从何种程度与何种意义上摆脱自我!
明天继续更新评论功能
<2005年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

与我联系

搜索

 

常用链接

留言簿

随笔分类

随笔档案

新闻分类

相册

HJ

朋友的博客

网站收藏

小组

友情链接

最新随笔

最新评论

阅读排行榜

评论排行榜

60天内阅读排行