硬件上的考虑

其实起50%的作用,当然是越快越好。如果不知道哪个快,就换成越贵越好。可实际上不可能做到这些,因为银子有限,所以按照这个顺序考虑:内存越大越好- >硬盘SCSI好于SATA->CPU越快越好。下面是一个比较极端的高级配置(指运行MySQL数据库级别的网站,想克隆ebay的去扎风投然后买曙光好了):

Dual Xeon 3.x + 4G RAM + SCSI 集群做MySQL服务器
Dual Xeon 3.x + 4G RAM + SCSI 做HTTP。

下面是一个更为靠普的推荐配置:
Dual Xeon 3.x + 4G RAM + SCSI 做MySQL+HTTP的单机服务器

而下面这个也是更为广泛的配置:
Dual Xeon 3.x + 2G RAM + SATA 做MySQL+HTTP的单机服务器
对于这种情况需要用心优化了。

记住,当有更多预算时,首先考虑的是内存,其次是高速硬盘和RAID,最后才是CPU。

软件的版本

软件指操作系统、Apache、MySQL和PHP的版本。对于操作系统,我一直习惯使用RedHat系列,现在用的是32位的Red Hat Enterprise Linux企业版,可能是因为家里的开发PC装的是免费的Fedora Core。而目前流行的被认为最适合做Web服务器的是CentOS,不过我没有用过。

相对于OS的版本,内核的版本更为重要,建议随时升级到最新版本的内核。关于内核比较重要的事情是跟超线程CPU的兼容。早期的超线程功能往往会被禁掉,因为软件不支持,而现在的内核是支持超线程技术的,所以确保内核的更新是很有必要的。(参考文档:Hyper-Threading speeds Linux)

对于Apache、MySQL和PHP,都属于双线版本。即同时维护两个版本的产品线,我建议使用最新版本的Apache 2.0,因为Apache 2.0在HTTP的性能上做了很大的改进(Apache网站语),而MySQL根据自己的爱好,我使用MySQL 4.1系。注意如果你使用MySQL 3.x版,强烈建议你现在就升级到MySQL 4.1,你可以即刻看到网站速度提高。

对于PHP,我依然使用4.4系,因为现有的应用都是在4下面开发的,同时听说很多升级到PHP5后的惨痛故事,我就不冒险了。说到PHP,不得不抱怨几句,因为PHP的发行版经常有一些匪夷所思的BUG,比如有一次我发现某个在开发PC上用的好好的函数在服务器上突然用不了(服务器自动抢鲜升级了PHP),最后折腾1天得知PHP发布新版本的小子忘了把那个函数打包进去了(非常常用的函数apache_note)。

Apache参数的优化

按照前面提到的版本问题,Apache可以直接使用2.0版本产品线。针对Apache的优化主要是针对httpd.conf的优化,当然还有其他地方,如果特别留意的话,网上常有专家惊呼“居然这么多人忽略xxxx处的优化”等等,实际情况也确实如此,因为优化的地方实在太多了,httpd.conf只能做一个出发点。即便如此如果仅仅使用httpd.conf出厂默认值的话还是令人痛心不已。 (更多…)