阅读(2328)

php服务器性能优化配置方案详解

最后一次修改 2017年12月14日

其实开发出一个性能很好的程序,服务器起到至关重要的作用,本文我们就和大家分享最全的php服务器性能优化配置方案,希望能帮助到大家。

PHP服务器配置方案。

[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的站点是 可以免费下载到30天试用版(其实和破解版本的区别只是授权文件)。使用说明参见:
[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
官方站点 
最新版本 2.5.5
下载地址 
(2)Turck MMCache
官方站点 
最新版本 2.4.6 for PHP v4.3.4/5.0.0b2
下载地址 
需要注意的是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)
官方站点 
最新版本 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
官方站点 
不知道什么原因,Zend官方最近突然将所有与此软件有关的网页全部删除了,这个软件难道不再出售了吗?这是Zend Performance Suite在Windows下面的版本,使用FastCGI方式运行的PHP,估计是稳定性不能保障吧。
(2)Zend Performance Suite
官方站点 
最新版本 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操作,才能确保您的数据库稳定不会出现数据表错误:

1

ALTER TABLE table_name type=MyISAM;

其中table_name是数据表的名称。
对于Linux主机,可以安装glibc,当前最新版本2.3.3,下载地址 然后安装里面的LinuxThreads。可以参考 
对于FreeBSD主机,也可以安装LinuxThreads,就是编译比较麻烦。

相关推荐:

js实现图片粘贴上传到服务器并展示的实例

搭建简易静态文件http服务器的方法

LNMP环境更换Nginx服务器为Tengine的示例代码