程序也要讲道德
Saturday, September 16, 2006 5:57:21 AM
程序也要讲道德!这是我最近的心声。
随着Webus系统上线运行了一段时间,我发现了一个问题:很多网站都把Webus的蜘蛛程序的IP给封了。一开始我并没有重视这个问题,可是随着这种情况愈演愈烈,我们的蜘蛛程序已经被好几百个网站给封了。这个现象很奇怪,于是我立即着手检查原因。
随着几天来的调查,我渐渐发现了一些问题。一些封我们的网站往往会被我们的蜘蛛程序频繁访问,不过关键的是我们的蜘蛛程序会用256个并发线程去访问别人的站点。如此一来,这些站点的压力就相当大:大站点可能还受得了,小站点可能就会有点够呛了。我就曾亲眼看到一个小论坛被蜘蛛程序给访问得宕机了一小会儿。面对这种情况,任何一个网站管理员都会毫不犹豫的将这个访问者给封掉,因为它看起来就像攻击一样。
了解了这个情况,我立马开始对程序进行改进。定制了新的规则,对每个网站不使用超过3个以上的并发线程进行访问。改进完成后,我们的蜘蛛程序跑了好长时间,再没有被封的情况发生了。虽然速度较原来慢了些,但是却获得了道德这个更加宝贵的特性。
--- --- 2006-9-22 补充结论 --- ---
9-20日,蜘蛛程序被封的问题仍然存在,而且已经实实在在对Webus造成了影响。长此以往,必将影响服务质量。因此决心彻查这个问题。
经过一个多小时的观察,我发现了一个奇怪的现象:http://bbs.zhcw.com这个网站在一开始还能够访问的,可是现在不能访问了!然到这个网站就在我的眼皮底下把Webus给封了?不会,这也太巧了。难道是我自己封了?对,很有可能。我有一个习惯,定期将防火墙中记录的攻击者IP给封掉,这些IP中,有可能包含了那些网站的IP也说不定。于是我检查了bbs.zhcw.com的IP,再到防火墙中一核对,果然在其中,被设置成了永久拒绝!我将设置一删除,马上就能够访问了!哈哈,看来问题就出在这里了。原来我采用的防火墙安全策略过高,导致过于敏感,将正常的数据也当成攻击了。
确定了问题之后,我对防火墙重新进行了设置,接着又观察了一个多小时,发现好多网站都能够访问了。然后接下来的两天中,程序运行也比较正常,数据量也逐步上升,渐渐达到过去的水平了。而且很多网站管理员似乎并没有我想象中警惕性那么高,哪怕开再多的线程去访问,他们依旧不会封锁你的IP。而对于sina等大网站,它们本身就有控制机制,一次只能够连接2个线程去进行下载。
考虑到这些情况,我还是保留了现在这种温和的采集策略,细水长流,这样挺好。^_^
随着Webus系统上线运行了一段时间,我发现了一个问题:很多网站都把Webus的蜘蛛程序的IP给封了。一开始我并没有重视这个问题,可是随着这种情况愈演愈烈,我们的蜘蛛程序已经被好几百个网站给封了。这个现象很奇怪,于是我立即着手检查原因。
随着几天来的调查,我渐渐发现了一些问题。一些封我们的网站往往会被我们的蜘蛛程序频繁访问,不过关键的是我们的蜘蛛程序会用256个并发线程去访问别人的站点。如此一来,这些站点的压力就相当大:大站点可能还受得了,小站点可能就会有点够呛了。我就曾亲眼看到一个小论坛被蜘蛛程序给访问得宕机了一小会儿。面对这种情况,任何一个网站管理员都会毫不犹豫的将这个访问者给封掉,因为它看起来就像攻击一样。
了解了这个情况,我立马开始对程序进行改进。定制了新的规则,对每个网站不使用超过3个以上的并发线程进行访问。改进完成后,我们的蜘蛛程序跑了好长时间,再没有被封的情况发生了。虽然速度较原来慢了些,但是却获得了道德这个更加宝贵的特性。
--- --- 2006-9-22 补充结论 --- ---
9-20日,蜘蛛程序被封的问题仍然存在,而且已经实实在在对Webus造成了影响。长此以往,必将影响服务质量。因此决心彻查这个问题。
经过一个多小时的观察,我发现了一个奇怪的现象:http://bbs.zhcw.com这个网站在一开始还能够访问的,可是现在不能访问了!然到这个网站就在我的眼皮底下把Webus给封了?不会,这也太巧了。难道是我自己封了?对,很有可能。我有一个习惯,定期将防火墙中记录的攻击者IP给封掉,这些IP中,有可能包含了那些网站的IP也说不定。于是我检查了bbs.zhcw.com的IP,再到防火墙中一核对,果然在其中,被设置成了永久拒绝!我将设置一删除,马上就能够访问了!哈哈,看来问题就出在这里了。原来我采用的防火墙安全策略过高,导致过于敏感,将正常的数据也当成攻击了。
确定了问题之后,我对防火墙重新进行了设置,接着又观察了一个多小时,发现好多网站都能够访问了。然后接下来的两天中,程序运行也比较正常,数据量也逐步上升,渐渐达到过去的水平了。而且很多网站管理员似乎并没有我想象中警惕性那么高,哪怕开再多的线程去访问,他们依旧不会封锁你的IP。而对于sina等大网站,它们本身就有控制机制,一次只能够连接2个线程去进行下载。
考虑到这些情况,我还是保留了现在这种温和的采集策略,细水长流,这样挺好。^_^
