本文定位为手册性的指南介绍。如果你对web服务器的性能特别关注,请留意不久后即将发表的另一篇文章,在那篇文章中,将介绍了不同的平台和多种服务器。
因为免费的Apache web服务器约占了所有的web服务器软件中的半壁江山,同时Sun公司的硬件也占了所有服务器硬件的大多数比例。我将介绍一下这样的配置。事实上,为了方便起见,我所详细介绍的就是一个现实的网站目前所用的服务器。
该机器的型号为SPARCstation 20,其配置:256 MB内存, 单个SM71 处理器模块。操作系统为Solaris 7, 服务器软件为Apache 1.3。 无论硬件是否不同,以及运行哪一种UNIX平台, Apache的配置方法不变。
硬件配置
如前所述,该机器型号为SPARCstation 20。为何要采用Sun公司的机器,而不在Intel架构下运行Linux或者Windows NT?基本上,原因分为下面四点,我将用一个例子分别加以阐述:
兼容性
可扩性
维护和管理
开销
兼容性
如果你已经有了一个网站,为了保持兼容性,将尽可能维持类似的配置,这一点也许是重要的。这也许意味着如果你运行的是Windows NT server,就会坚持采用兼容Windows NT的硬件,或者如果现在运行的是Linux平台,也会保持现状不变。
前面介绍的服务器是运行Solaris操作系统的Sun机器。尽管是个小容量的小型机器,自从配置安装好之后,作为我们的web服务器,已经成功运行约6个月,自那时起,我们的网站服务器就一直保持为Solaris/Apache平台。
此时,我们尤为关注停机维护时间和保护最初的投资。通过保持不变的硬件和软件平台,就可以保证代码级的兼容性,和最小的停机维护时间。
可扩性
你的新服务器是否提供了可扩空间?过了6个月之后,是否需要升级?显然,如果你打算完全替换硬件,需要的服务器数量将同你的网站内容数量一起水涨船高。根据你的网站需求,你也许需要更高的CPU处理能力,或者更高的磁盘传输率。如果你的机器在哪方面有不足,就需要对那一方面的不足进行改进。有时,这就可能意味着需要采用能够安装两个或者四个处理器的主板,或者意味着需要采用更强大的RAID控制器。
前面所述的服务器已经充分扩充,没有进一步升级的余地了,我们觉得选择服务器时不仅要看它是否可扩空间,也要看它是否能够在群集环境中工作良好,这一点是重要的。
我们现在使用的SPARCstation 20最多可扩到四个处理器,带有8条SIMM,四个扩展槽,以及四个磁盘驱动器接口,另外,该机器主板上还具有SCSI和以太网接口。另外一个重要的方面是整个机器只有3英寸高, 16英寸宽,深度16英寸。这就非常适宜安装到机架上。
维护和管理
该部分主要涉及到软件,当服务器发生故障时,没人愿意每次重新安装服务器软件。基本的管理功能应该总是能够通过远程进行,而且要能够进行重启动等。能够远程控制也是一个优点。
Solaris同大多数UNIX系统一样,提供了不少工具,来帮助用户进行远程管理。对于我们的机器,从添加新用户和改变web服务器参数,到重启动和配置新的硬件,都可以远程进行。
成本
你可以保护多少初始投资?要求既能满足你的当时需求,也能用满足将来的升级需要,哪一种服务器最经济?
成本也是重要的因素。尽管我们可以购买得起比现在这台机器更贵的Sun 系统。但是,由于该Sun机器已经内置SCSI和ethernet,就无需购买这两种适配器,软驱和CDROM驱动器也不需要,因为可以通过网络进行软件的安装。视频卡也不需要,因为该机器完全可以通过telnet或者远程X会议系统进行访问。
你可以看到,在这种场合下,Sun机器远比相应的PC廉价,因为我们仅需要基本的单元(主板和机箱),CPU和内存。而对于一台PC服务器,不仅需要购买一个基本单元,也需要购买视频卡, SCSI卡,网卡,软驱,CDROM驱动器,另外也需要借一台显示器,用于软件安装。
你将需要多少硬件?
这完全取决于你要发布的内容,以及要服务的人数。实际上,如果仅用于发布静态的HTML网页,采用90 MHz的Pentium, 适当容量的RAM, 能够适用于1.5Mbps T1连接速度的磁盘,就足够了。基于服务器的动态HTML, ASP, PHP以及其他更复杂的文档类型,在用户发出请求时,将消耗更多的CPU时间。通常,用ASP或者PHP来查询数据库,得到信息后,再传输到web文档中去。在这些场合,在同样的网络连接速度下,你需要有比发布静态网页的机器更强有力的web服务器。
通常,一次硬件升级可以提升两倍的性能,如果再加上更高级的软件,性能可以最大提升到100倍以上。一个小小的例子可以说明这一点,在我们的网站上,原来采用PERL脚本把数据写入到文件中,在升级到采用数据库实现之后,在我们留言簿上生成索引的时间减少到为原来的50分之一。查询数据库并生成客户端可以看到的HTML文档的实际代码仅为600行,而采用CGI/PERL实现时,则产生超过3000行代码,且功能较少,而且启动的灵活性较低。