今天下午和晚上在做暨大离线的一些准备,主要测试了一些东西
离线下载,顾名思义你离线,服务器帮你下载,那么服务器下完之后还得给你传,这里采用什么传输方式呢?
一开始我有考虑使用ftp,但是发现相比起http下载,ftp还有很多人不会用,如果这个局域网过程仍然采用http下载,对于用户来说会不会比较无痛呢?
于是我开始测试服务器用的web服务器软件,服务器这边目前是win2k3环境(至于为什么,后面文章再有详细介绍)。
这个服务器承担让用户取回要下载的文件的这么一个角色,只需要对静态文件提供http下载即可,不需要脚本支持。
Nginx在windows——杯具!
一开始我测试了windows版本的nginx,nginx在linux上面是个很不错的服务器软件,有低资源占用,抗并发能力好等特点。但是到了windows平台上就坑爹啊~~这一点你还不能怪nginx的开发者,实际上C语言可以为Windows平台编写软件,linux也没有例外。程序本身的逻辑应该是跨平台的,而在具体与系统打交道(调用系统api)的时候才有差异,这个差异有很多方面,包括内存管理、进程管理、文件系统、网络控制等方面。而一个优秀的开源服务器软件,nginx,在windows下,是在这次测试中表现最渣的一个。对于同一个普通二进制静态文件,局域网内客户端开5线程下载平均速度在1mb/s左右,峰值可以达到1.5mb/s,速度很不稳定。
Apache在windows——仍旧杯具!
第二我测试了Apache,Apache作为市场占有率第一的服务器软件,在windows平台上也有比较完善的版本。我是从官方网站下载的2.2stable版安装的,还是跟上面一样的那个文件,一样的客户端一样的5线程,下载平均速度1.3mb/s,峰值能到1.5mb/s。速度比较稳定,不过Apache的个东西,性能不会是最好的,apache和nginx最大的不同是,apache使用了每个请求一个线程的阻塞I/O模型,nginx使用了单线程的非阻塞I/O模型,关于apache和nginx之间的讨论还有很多,我比较偏向于把apache和nginx组合来使用(明显是说在linux平台上),这样他们两个可以互相取长补短。
IIS不用说肯定是在windows——居然能跑这么快!坑爹啊
最后我尝试了IIS,IIS的配置过程看起来非常轻松方便。测试同一个文件,额,什么情况!这win2k3上面的iis6,居然让客户端的下载速度平均值达到了2mb/s,峰值能到2.3mb/s。搜了一下网上很多人都有说这个问题,在微软的windows上面就他自家的iis跑得最快了,别的都是渣渣。
就这样这个web服务器软件就暂时选定了IIS吧,是那个我之前相当鄙视的IIS,总的来说其实是自己对于IIS没有很多的认知。IIS怎么说市场份额也是排在第二的(Apache比它大几倍的稳居榜首),另外有一点,国内很多入门级虚拟主机都是windows IIS ISAPI来支持PHP的,他们也不会在windows上面弄apache,这一点也能说明一些问题。当然了,这是一片神奇的土地,国外又完全不是这么回事了,国外一般人不会用Windows做服务器的操作系统(是服务器不是pc),包括费用等方面的考虑(我觉得更大的原因是——用不着)。