调整Firefox参数发挥网络采集软件性能

网络采集软件工具包MetaSeeker的客户端软件MetaStudio和DataScraper都是Firefox的扩展软件,DataScraper执行网络采集任务,其性能备受关注,从V4.10.0版本开始,DataScraper采用了新架构而且使用C++直接调用Mozilla的底层接口,性能跨越式提高。然而,DataScraper的好的设计方案固然是性能提高的内在因素,仍然不能忽视Firefox的调优,毕竟DataScraper作为Firefox的扩展,依托其功能和性能。

DataScraper是一个通信密集型软件,几乎绝大多数程序代码都在处理网络通信过程,例如,从目标网站下载网页、DataScraper与MetaSeeker服务器通信等等,提高通信效率是首要目标,跟通信效率有关的Firefox参数有很多,在Firefox的地址输入栏输入about:config后,可以看到一大片可调整参数,在过滤器输入框中输入“network”,就能看到所有有关网络通信的参数,数量仍然很多,我们只需要修改其中几个即可,其它保持缺省值,他们是:

  • network.http.keep-alive:规定是否启用HTTP连接模式HTTP persistent connection,如果启用,即使HTTP请求/响应完成了,TCP连接还将保持一段时间,以便后来的HTTP请求/响应能够重用这个连接,有效减小重建TCP连接的损耗,该参数的缺省值是true,然而,经过实测,如果并行运行过多DataScraper线程(例如,20个以上),该参数设置成false反而会提高网页加载速度;相反,如果只运行几个DataScraper线程,该参数保持true也许是个好主意。建议用户分别将该参数设置成false和true,测试性能差别,选择合适的设置。可以同时修改network.http.keep-alive.timeout,找到一个最佳组合。注意,如果DataScraper位于proxy后面,有效的参数应该是network.http.proxy.keep-alive。
  • network.http.max-persistent-connections-per-server:当启用keep-alive,可以调高TCP连接数数量,可用值1~255,例如,设置成30。该参数表示向同一个服务器建立并保持的TCP连接的数量,向所有服务器建立的连接数量受下一个参数控制。注意,如果DataScraper位于proxy后面,有效的参数应该是network.http.max-persistent-connections-per-proxy。
  • network.http.max-connections:同时向所有服务器建立的TCP连接的最大数量,有效值是1~65535,建议设置一个很大值,例如:800。
  • network.http.max-connections-per-server:向同一个服务器建立的TCP连接的最大数量,有效值是1~65535,建议设置一个较大值,例如:150。
  • network.http.pipelining:在一个TCP连接上,HTTP请求-HTTP响应一般来说是一对对顺序处理的,如果采用pipelining,可以多个请求一起发送,随后收到多个响应,可见,是提高性能的手段,然而服务器的支持情况不一样,建议该参数保持false。

以上建议都是实验获得的经验,用户可以根据自己的体验调整上述参数,找到一个最佳组合。