合理使用软件下载 武彬 2001年 39期 今天,Internet在中国正以惊人的速度普及开来,中国的网民也以近乎几何级数的速度增长。不过,在众多新近的网民中有不少是以QQ聊天入手的,对其他一些知识了解不够深入。下载,是网络服务中不可缺少的一环,今天,我们就结合原理,详细谈谈怎样合理使用软件下载。   #1一、N线程=N倍速?   ●什么是多线程下载   要了解什么是多线程下载,就先得了解几个概念:   进程:当我们下载文件时,先是由自己的计算机在内存中建立一小段程序来处理下载的任务,用专业术语来说就是创建一个进程。   线程:是指由进程进一步派生出来的一组代码(指令组)的执行过程。   在软件下载时用多个线程从几个不同的地方同时开始接收数据,大大加快了整个文件下载的速度,这就是我们常说的多线程下载。常见下载软件网络蚂蚁、网际快车都支持多线程下载。   每一个进程都会占用一定的系统资源。服务器通常都是采用分时处理的办法,对每一个进程轮流处理,给人以所有进程都在同时运行的感觉。   在不考虑优先级的情况下,服务器对每一个进程所花的时间是相同的,所以使用多个进程,就相当于得到了更多的服务器处理时间,而在网络条件允许的情况下,服务器向我方发送的数据量也就会随进程数的增加而成正比增加,总的下载速度自然也就会加快。   由于网络蚂蚁是利用多进程同时下载一个文件的办法来提高下载速度的,所以不免有人会想:如果增加使用的进程的数量,能不能把下载速度提得更高呢?于是,能够同时使用一百个甚至一千个进程来下载的软件纷纷涌现。殊不知,线程太多反而很有可能导致下载的效率降低。   ●过多的进程对服务器的影响   正所谓“欲速则不达”,如果盲目地增加进程的数量,会给自己的计算机和服务器带来巨大的CPU处理时间和内存的开销,就会造成服务器崩溃,完全无法响应任何请求,自然也就无法下载了。即使没有崩溃,过多的进程也会使服务器花费许多不必要的资源在进程之间的管理和协调上,每个进程发送数据的实际效率反而下降。   ●拨号网络用户应该怎样设置进程数   就像前面所说的那样,靠增加进程数来提高下载速度必须是在“网络条件允许的情况下”才能成立。比如使用Modem拨号上网的用户,比较快的传输速度也不过6KB/s左右,如果网络阻塞,每个进程只以1KB/s的速度发送数据,那么在理想情况下,以6个进程同时下载就刚好把下载的带宽使用完全;反之,如果服务器和本机之间网络状况良好,一个进程就能够使用6K/s的速度发送数据,占用了全部带宽,那提高进程数量就只会增加负担,完全没有提速的作用。   同时,对于广泛使用存储/转发方式传播数据的网络来说,过多的进程会消耗网络中各个中转站(节点)大量的缓存,最终造成网络“堵车”。就好比公路上的堵车现象,最终还可能会导致断线。   所以说,大家在下载时开的进程一定要合适。以最常用的网络蚂蚁为例,在一般情况下,网络比较通畅,每个任务使用两三个蚂蚁,允许同时开两个任务下载就已经足够撑满拨号带宽了(在网络蚂蚁里按“Ctrl+O”调整,如图)(^39040601a^),如果遇到网络繁忙,下载速度明显较慢,可以适当多开。   遵循这样的原则,进程就不会太多,对自己浏览网页或者使用QQ不至于造成过大影响。   ●宽带网用户应该怎样设置进程数   现在,使用ADSL、专线和宽带网等高速接入的人也越来越多,那么,这些用户是不是也应该以完全使用带宽为标准来调节下载的进程数呢?答案也是否定的。   第一,要考虑服务器的负载能力,如果把服务器“拖”垮了,大家都没得下,相信“吃快弄破碗”的道理不难理解。   第二,通常一条高速接入的线路是供一个局域网或一个小区(特别是宽带网)使用的,在没有使用带宽限制的情况下,带宽是由各用户共享的,如果大家都使用多进程来抢占带宽就只会恶性循环造成代理服务器死机或网络阻塞。   第三,在高速的情况下,多进程下载会使硬盘在为每个进程记录数据时频繁换道,既大大增加了CPU占用,又严重降低了硬盘寿命。解决办法除了减少进程数量以外(一般5个进程已经足够),还可以增大内存缓冲的容量,在网络蚂蚁和网际快车里,通过“选项→参数设置→高级→自动保存任务每隔?KB”和“工具→选项→常规→把数据写入到磁盘每当接收到?KB”都可以很轻松地调节,根据机器配置和网络速度选择即可。   #1二、怎样克服末端效应   使用多进程下载的软件都有一个所谓的“末端效应”,就是整个文件下载到最后时速度明显变慢。原因很简单:下载时要先经过连接服务器→发送请求→接收请求→建立进程等一系列过程后才开始数据传输(在网络蚂蚁和网际快车的“日志”中都可以清楚的看到这个过程),这个过程当然也是需要时间的。而多进程的下载软件,在某个进程下载完成后,如果发现还有未下载的一段空白数据的长度大于预先设定的数值,就会以“二分法”(即从剩下的二分之一处开始)或其他算法开始下载,这次下载当然也要经过那些繁复的“手续”。在下载越接近尾声的时候,每次连接后传输数据的时间就越短,相应的连接所需要的时间所占的比例就越大,下载的总速度也就显得越慢。   解决办法自然是调整相应的数值,也就是所需要拆分的块的大小。在网际快车中可以通过调整“工具→选项→常规→分段下载的每段的最小尺寸”选项来调节(网络蚂蚁中没有类似的选项)。具体设置时还要参考对方服务器的响应速度,如连接速度快,数据传输速度较慢,就不妨设得小一点;反之,就可以设得比较大。顺便提一下,因为FTP的连接“手续”较HTTP更为复杂,一般来说使用的时间也就更多,所以一个软件有多个下载地点可以选择时,尽量选择使用HTTP协议的下载地点(即下载的地址是以http://开头的那个)。   值得一提的是,当前一个进程下载到下一个进程开始的地方时,如果下一个进程这时还没有开始传输数据,网络蚂蚁还是会结束上个进程,待下一个进程继续接收,而网际快车则是中断下一个进程,由上一个进程直接继续接收下去。这种功能对从连接速度极慢或因下载人数太多导致连接困难的服务器上下载时相当有用。因此当你下载大量小文件时,可考虑使用网际快车。   #1三、用好速度限制功能   在拨号上网时,下载软件会抢占大部分带宽,导致浏览器几乎完全无法正常浏览,对于那些习惯于一边浏览一边下载的人来说也确实是一个头痛的问题,这就需要动用到“速度限制”功能了。   在网络蚂蚁的“选项→参数设置→连接→带宽”中,可以设置网络蚂蚁的最大下载速度和让给外部连接的带宽。在网络速度足够的情况下,最大速度以外的带宽都会让给外部连接(如浏览器),即使总速度低于最大速度,也会把指定数量的带宽让出来。对于拨号用户来说,这两个选项的默认值一般不用更改,在“选项→速度限定模式”中选择手工,就可以使设置生效。而在网际快车的“工具→选项→连接”中,也可以以KB为单位设置速度限制,然后通过选定“总是速度限制”选项一直使用速度限制或用“工具→速度限制”来手工启动或停止。   不过,在这一方面,网络蚂蚁的“自动调整速度限制”功能显得强多了。通过“选项→速度限定模式→自动”启动这项功能以后,状态栏上就会多出一格。这一格中整个长条的长度和后面的数据表示总的带宽,而长条中蓝色部分是网络蚂蚁用来下载的,白色部分是让出给外部连接的。仔细观察下载过程,可以明显看到外部连接请求的带宽越多(浏览器窗口开得越多),白色的部分就越长,表示网络蚂蚁让出的带宽越多;而外部请求越少,网络蚂蚁就会将更多的带宽用来下载,以充分利用,真是“浏览下载两不误”啊。   