[PHP配置]PHP服务器性能最优化配置

jackxiang 2007-1-25 22:05 | |


[1]关于操作系统的选择

PHP在Linux/FreeBSD下面的性能比在Windows主机下的性能更好。如果您没有必须使用Windows主机的理由(比如需要使用ASP.net或者SQL Server或者Windows Media Server或者Serv-U),那么我推荐您使用Linux/FreeBSD。
如果您需要使用Windows,推荐使用Windows 2003 32位企业版,不推荐使用Windows 2000(性能较差)。
如果您需要使用Linux,推荐使用RedHat Enterprise Linux(最新版本是RedHat Enterprise Linux 4 beta1)。
如果您需要使用FreeBSD,推荐使用最新版本FreeBSD 5.2.1。
如果您的MySQL和Web分离,MySQL主机推荐使用Linux系统,通过LinuxThread可以有很好的性能(LinuxThread也可以在FreeBSD下面安装,但是比较麻烦)

[2]关于Web Server的选择

如果您使用的是Windows,那么推荐使用IIS6.0,不推荐使用Apache(性能较差)。
如果您使用的是Linux/FreeBSD,那么推荐使用Zeus或Apache(Apache的最新版本是2.0.52/1.3.33)。
注意:Zeus最新版本4.3版尚不支持FreeBSD 5.0版本。
Zeus Web Server是目前全球性能最好的、速度最快的、功能最强大的、抗压性最优良的、安全性最佳的Web服务器软件,但是是商业软件,费用比较贵(支持双至强启用超线程需要2200美元),网上面可以下载到Zeus 4.3 for Linux和FreeBSD 4.x的破解版本。国内很多大型论坛,单主机在线上万人的大多使用Zeus,系统消耗比Apache小很多。同时Zeus支持服务器负载平衡,多个主机通过使用Zeus Load Balancer可以实现超级规模站点的支持。
Zeus的站点是 http://www.zeus.com/ 可以免费下载到30天试用版(其实和破解版本的区别只是授权文件)。使用说明参见:
http://support.zeus.com/doc/zws/v4/getting_started.pdf
http://support.zeus.com/doc/zws/v4/user_guide.pdf
[3]关于PHP运行方式的选择

Windows主机需要安装PHP的完整版本,不能使用php.net提供的安装程序来安装,而应该手动安装。如果需要使用Unicode(UTF-8)编码,Windows主机下如果是php4.3.x版本需要单独加载iconv()函数库(需要在php.ini中正确设置extension_dir,比如extension_dir = “C:/php/extensions/”
,同时需要取消;extension=php_iconv.dll一行前面的;号,并将c:\php\dlls\iconv.dll复制到c:\windows\system32目录下。
注意:php5.x版本无需而且不能这样设置),而Linux/FreeBSD主机需要在编译PHP的时候加入iconv的参数(./configure–with-iconv)。
在Windows下面,如果使用IIS,推荐使用ISAPI方式来运行,千万不要使用CGI方式运行。您也可以使用FastCGI方式(需要下载FastCGI的模块并作相当多的配置),这个性能更好一些,如果再同时使用两个加速器(Zend Optimizer、MMCache),测试下来居然可以接近FreeBSD下使用Zend Performance Suite的效果,但是我测试稳定性比较差,当线程超过FastCGI所限制的最大并发线程,某些时候有可能导致FastCGI进程死掉,进而无法访问任何站点,只能重起服务器来解决。
Linux/FreeBSD下面,如果使用Apache作为Web Server,推荐将PHP作为Apache的模块来运行。如果使用Zeus作为Web Server,要求使用FastCGI方式来运行PHP,但是FastCGI有可能出现死掉进程的问题,在停止zeus时,有时候会不能停止成功,使得PIDFILE不能清除,下次再启动时,FastCGI会无法启动。如果遇到bad gateway错误,需要检查PIDFILE是否清除,如果没有则手动清除再重启Zeus。最好的办法是使用crontab,定时自动重启FastCGI。
关于FastCGI的问题,在某些主机下运行很正常,若干个月不会有任何问题。而有些主机却比较频繁,不论是Windows或者Linux/FreeBSD,看运气吧。

[4]关于PHP免费加速器的选择

可以使用的免费加速器主要有Zend Optimizer、Turck MMcache、ionCube PHP Accelerator。
(1)Zend Optimizer
官方站点 http://www.zend.com/store/products/zend-optimizer.php
最新版本 2.5.5
下载地址 http://www.zend.com/store/free_download.php?pid=13
(2)Turck MMCache
官方站点 http://sourceforge.net/projects/turck-mmcache/
最新版本 2.4.6 for PHP v4.3.4/5.0.0b2
下载地址 http://sourceforge.net/project/showfiles.p…ackage_id=68348
需要注意的是PHP最新版本是4.3.9/5.0.2,所以如果您需要在PHP的最新版本下使用Turck MMCache,需要进行单独编译。我在这个主题的附件里面上传了编译好的Turck MMCache v2.4.7 CVS for PHP v4.3.9和Turck MMCache v2.4.7 CVS for PHP v5.0.2两个版本需要的文件,先安装MMCache 2.4.6,然后将我提供的压缩包里面的文件改名为mmcache.dll,替换旧文件即可,注意:这两个文件只适用于Windows主机,如果您需要在Linux/FreeBSD下面使用,需要单独编译MMCache。
但是需要说明的是MMCache for PHP5.0.2的版本,在PHP 5.0.2下面使用存在bug,推荐在PHP5.0.2下暂时不要使用MMCache。
(3)ionCube PHP Accelerator(PHPA)
官方站点 http://www.php-accelerator.co.uk/
最新版本 1.3.3r2 builds for PHP 4.3.0
这个软件只能在Solaris/FreeBSD/Linux下面使用,不支持Windows,而且不支持PHP的最新版本。而Zend Optimizer、Turck MMcache都是支持各种服务器(Windows/Linux/FreeBSD)、各种Web Server(IIS/Apache/Zeus)以及PHP的各种版本的。所以我不推荐使用此软件。
[5]关于PHP收费加速器的选择

可以使用的收费加速器主要有Zend WinEnabler、Zend Performance Suite。
(1)Zend WinEnabler
官方站点 http://www.zend.com/store/products/zend-win-enabler.php
不知道什么原因,Zend官方最近突然将所有与此软件有关的网页全部删除了,这个软件难道不再出售了吗?这是Zend Performance Suite在Windows下面的版本,使用FastCGI方式运行的PHP,估计是稳定性不能保障吧。
(2)Zend Performance Suite
官方站点 http://www.zend.com/store/products/zend-pe…mance-suite.php
最新版本 4.0
这个软件只能用在Linux/FreeBSD下面,支持Apache和Zeus。据称可以提升php程序20倍的速度,但是售价比较昂贵,1875美元起。网上面可以下载到破解版本,不过是3.6.0/3.5.0版,不支持PHP 5.0。Zend Accelerator和早期的Zend Cache的功能都被包含于此套件当中。注意:如果使用此软件对PHP程序进行缓存,则对文件的任何修改都需要重起Web Server才能生效。
[6]关于MySQL的安装

推荐安装MySQL 4.0.x/4.1.x版本,当前最新版本是4.0.22/4.1.17。MySQL4.0以上版本可以使用Query Cache大幅度提升性能(需要在my.ini里面设置)。MySQL4.1以上采用新的协议,速度更提升30%以上,内存占用更少。
对于MySQL4.1.x版本,PHP 5.x在原有mysql扩展之外提供了专有mysqli函数扩展连接MySQL4.1.x版本,这样在MySQL4.1.x下,使用mysqli扩展相对于使用mysql扩展可以提升数十倍的SQL操作速度。极致论坛程序自带的使用的是mysql扩展,我们另外提供了单独出售的极致论坛mysqli扩展模块,您可以选购使用。
对于Windows主机,安装mysqld-nt即可,没必要使用mysqld-max-nt。
注意:如果您在Windows下面运行MySQL 4.0.x,您需要手工对每个数据表执行如下SQL操作,才能确保您的数据库稳定不会出现数据表错误:

ALTER TABLE table_name type=MyISAM;

其中table_name是数据表的名称。
对于Linux主机,可以安装glibc,当前最新版本2.3.3,下载地址 http://www.gnu.org/software/libc/libc.html 然后安装里面的LinuxThreads。可以参考 http://dev.mysql.com/doc/mysql/en/Linux.html
对于FreeBSD主机,也可以安装LinuxThreads,就是编译比较麻烦。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/476/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2007-1-26 07:52
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]