论Web服务器的运行速度,谁与Nginx争锋!(1)


在上一篇《Nginx风头正劲,Apache和IIS Web服务器遇到对手》文章中,我们介绍了在Web服务器系统管理员有了更多的选择;主要的替代服务器之一:开源Nginx Web服务器正在迅速发展起来。本文介绍了如何在笔记本电脑上,通过Nginx处理每秒10000个请求的繁重任务。

说得好听点,我是个不大专业的系统管理员。我年轻时从事技术支持,后来在一个运行几个UNIX系统的Windows部门担任管理员工作,这些系统大多放置在装有空调的清洁机房里,由上了年纪的员工负责维护。直到我开始管理企业级存储设备,才慢慢领教了bash外壳程序的强大功能,我那个拼凑起来的家庭网络慢慢由支持几台个人电脑的Windows 2003域变成了GNU/Linux服务器和OS X台式机及笔记本电脑组成的混合环境。

与大多数人一样,我最后也决定把自己的网站放到互联网上,于是我使用Apache HTTP服务器来托管该网站。原因何在?因为我眼前就有一套Ubuntu服务器设备,而Apache服务器是我听到次数最多的Web服务器。既然Apache对大型网站来说都足够好,它对我这个小小的静态个人网站来说理应足够好,不是吗?

但没想到,Apache对我来说不太好用。下面介绍了具体原因——我用了一个周末的时间扔掉原先安装的Apache服务器,换成了Nginx的Web服务器:其守护程序占用资源少,运行速度快。

老朽系统

Apache安装起来很容易。我差点儿要写成“太”容易了;但是如果你光有一身胆量,只晓得“Apache是托管运行网站的某种软件”,就想动手安装Apache,那么恐怕面临需要摸索学习的一个过程。不过,我在网上只搜索了一两个小时以寻求帮助,钻研Apache的配置文件,就建好了网站,它还是放在互联网上的!几个月后,Ars刊登了一篇文章,介绍如何获得免费的SSL/TLS证书(http://arstechnica.com/security/news/2009/12/how-to-get-set-with-a-secure-sertificate-for-free.ar)。我立马想试一下——倒不是由于我真的很需要该证书,而是就想看看证书是如何工作的。此文刊登后没过一天,我就为自己的域获得了一份2级通配符SSL/TLS证书,我的Web服务器就有了https。

系统就这样顺利运行了好几年;但是当我开始进一步折腾Web服务器时,这一点开始显露无遗:我安装的系统尽管运行顺畅,但可以做得更好。尤其是,为Web服务器添加了Tectonicus后,我发现系统并非处于最佳运行状态。Tectonicus是一款沙盘游戏《Minecraft》地图渲染工具,可以生成数以百万讲的小图片,并且使用类似谷歌地图(Google Maps)的界面,将众多小图片拼接起来。即使在我的本地网络上,Apache也很难以相当快的速度来显示地图。该Web服务器的硬件配置是双核AMD E-350、2GB内存和Vertex 2固态硬盘,理应会立即显示网站的静态图像。但是htop工具显示,只要一显示Tectonicus地图,Apache进程就疯狂地占用处理器资源;屏幕慢慢填满小图片时,两个处理器核心的使用率都达到了100%。