如果想要提高Nutch局域网抓取的速度,大家第一个想到肯定是-threads
.但是那是错误的,如果只是单单增大线程数,那根本于事无补。
通过下面这组测试,我们看看-threads
是否起作用。首先在本地apache2下建立两个网站,写一个简单的Rakefile来帮助完成测试。设定depth=3
,下面是Rakefile的内容:
threads=1
depth=3
task:default => [:crawl]
task:crawl => [:clean] do
t=Time.now
sh "bin/nutch crawl myurl -dir crawl -depth #{depth} -threads #{threads}"
puts Time.now-t
end
task:clean do
sh "rm -rf crawl"
end
threads的值分别为1,5,10 结果如下表:
线程数
时间
1
|
891.001462
|
5
|
889.560529
|
10
|
878.812949
|
从上面表格可以看出,这根本一点作用都没有。第一种提高速度的方法就是减少抓取之间的延迟时间,我们可以通过修改conf/nutch-default.xml中fetcher.server.delay
来减少延迟时间。
fetcher.server.delay
抓取器在同一服务器的逐次请求所延迟的秒数
我们试试减小它的值为1.0(原先的值为5.0)。经过测试,结果如下:
线程数
时间
1
|
482.807096
|
5
|
488.666853
|
10
|
486.67904
|
显然速度提高了,但是线程数还是起没有作用,原因就在于conf/nutch-default.xml中fetcher.threads.per.host
配置为1。那么第二种方法就是同一时刻允许多个线程访问同一主机。
fetcher.threads.per.host
这个值允许同一时刻访问一台主机的最大线程数
如果这个配置为1,同一时刻只允许一个线程,启动多少的线程都没用。下面我们增大这个配置为5,测试结果如下:
线程数
时间
1
|
484.754918
|
5
|
384.201041
|
10
|
332.934009
|
很明显随着线程数的增大,抓取速度也在增大。如果还想再提高速度的话,可以减小抓取之间的延迟时间。不过不是修改fetcher.server.delay
,而是修改fetcher.server.min.delay
。这个配置是设定抓取器在同一服务器的逐次请求所延迟最小的秒数,这个值仅当fetcher.threads.per.host
属性值比1大时适用。
hi 朋友,很感谢你。我的问题基本上解决了
我将fetcher.server.delay改成1.0
fetcher.threads.per.host 改成15
在抓取时最高能到到3M/s
很棒,再次感谢
原文:http://hi.baidu.com/java_2009/blog/item/a96f3ea8a40487f01e17a23e.html
相关推荐
**Nutch局域网抓取** 1. **本地下载准备** - 启动Tomcat服务器。 - 创建`urls.txt`文件,添加要抓取的Web服务器地址,如`http://127.0.0.1:8080/`。 - 修改`crawl-urlfilter.txt`文件,设置URL过滤规则,允许...
**两种抓取模式**:Nutch提供了两种抓取方式——局域网抓取和全网抓取。局域网抓取适用于小规模网站(约百万页面以内),而全网抓取则提供了更高级别的控制。 #### 三、局域网抓取详解 局域网抓取是针对内部网络...
Nutch搜索引擎能够对局域网和整个Web进行爬取,且提供了一个命令行工具来控制其运行和管理。 首先,Nutch的命令是其运行和管理的核心,通过不同的命令,Nutch可以执行相应的爬取和索引操作。例如, crawl命令代表了...
Nutch的设计充分考虑了灵活性与可扩展性,使其不仅适用于大规模的全球Web搜索场景,也适合较小规模的局域网内搜索,甚至个人电脑上的文件、邮件和个人浏览历史的索引。Nutch的架构允许社区成员根据具体需求定制化...
#### 五、局域网抓取配置 1. **启动Tomcat服务器**:确保Tomcat服务正在运行。 2. **准备URL文件**:创建一个名为`url.txt`的文件,其中包含需要抓取的URL列表。例如,`http://127.0.0.1:8080/`。 3. **配置URL过滤...
分布式网络爬虫是一种高效抓取大规模互联网数据的工具,它通过多台计算机协作工作,将爬行任务分散处理,以提高爬行速度和覆盖范围。本文主要探讨了分布式网络爬虫的关键技术和体系结构。 首先,分布式网络爬虫分为...