虽说,在Windwos测试看起来毫无价值,但是这件事对于我自身,和我公司目前的一些事情和状况来说,还是有价值的。所以我会坚持测试完毕。今天下午会在同一台机器上(换硬盘),装Ubuntu Server,然后装Zend Server、Nginx、Lighttpd,然后再进行同样的性能测试比较。
还是昨天的机器,进行三种不同的脚本测试:
info.php,测试重点,php枚举自身的php环境的数据。
<?php# info.php
phpinfo();
db.php,打开mysql数据库,测试连接数据库的性能,使用PDO,并且抽取10条记录,Post表现村145篇文章
<?php/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=wp_demo;host=192.168.33.2';
$user = 'root';
$password = 'mysql50';
try {
$dbh = new PDO($dsn, $user, $password);
foreach ($dbh->query("select * FROM wp_posts limit 10, 10") as $row) {
echo $row['post_title'] , '<br />';
}
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
open.php,测试经过PHP来处理IO的性能,sina.txt文件大小593kb。
<?phpecho file_get_contents('sina.txt');
exit();
nginx和lighttpd仍旧使用昨天测试时的配置,php-cgi,默认启动10个进程,Windows环境,为了某些因素,没有用我自己写的监护进程,在网上找到一个叫做xxfpm的东西,,这个东西类似php-fpm,可以监控php-cgi进程,无论你怎么杀php-cgi进程,都杀不死,除非将xxfpm给杀了。
启动后的情况。Nginx和Lighttpd,都是用fastcgi转交给该php-cgi来处理。配置就不列举了。而Zend Server部分,比如我的安装在C:\Zend,C:\Zend\ZendServer\etc\ZendEnablerConf.xml。调整通过ZendServer启动的php-cgi进程,需要如下的配置
<?xml version="1.0" encoding="UTF-8"?><ZendEnablerConfiguration version="2.0"
xmlns:xsi=""
xsi:noNamespaceSchemaLocation="ZendEnablerConf.xsd">
<Global>
<LogFile path="C:\Zend\ZendServer\logs\ZendEnabler.log" verbosity="0"maxFileSizeKB="100" />
</Global>
<DefaultPool impersonation="true">
<Environment>
<Variable name="DB2INSTANCE" value="DB2" />
<Variable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
<Variable name="TEMP" value="C:\DOCUME~1\Jan\LOCALS~1\Temp" />
<Variable name="PHPRC" value="C:\Zend\ZendServer\etc" />
<Variable name="PATH" value="C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin;C:\Program Files\QuickTime\QTSystem\;C:\scala\sbt\0.11;C:\qtjambi\4.7.1;C:\qtjambi\4.7.1\bin';C:\Program Files\StormII\Codec;C:\Program Files\StormII;C:\scala\bin;E:\Program Files\Thunder Network\Thunder\Program\;C:\Zend\ZendServer\bin" />
</Environment>
<ProcessCount start="10" extra="10"/>
<Timeouts connectionTimeout="60" requestTimeout="120" />
</DefaultPool>
<ServerPool mimeType="application/x-httpd-php"commandLine="C:\Zend\ZendServer\bin\php-cgi.exe" impersonation="true">
<ProcessCount start="10" extra="10"/>
</ServerPool>
</ZendEnablerConfiguration>
以下是测试结果(数值为rps的结果):
显然,Zend Server是Windows平台下的优胜者,尤其是在db.php的表现上。而Nginx和Lighttpd对比上,可看得出,Nginx的稳定性较好,处理PHP是适合的选择,而Lighttpd在IO方面,则较为出色(open.php)。
好,Windwos的平台告一段落,下午会重新装一个Ubuntu Server,重复进行上述的测试。为了公正起见,不会进行过分的优化调整,而是简单的测试10进程php-cgi模式。尽量先完成默认配置的测试以后,再进行优化配置,而后再来比较。
另外,同事说Windows下的cherokee也十分猛,强烈要求进行测试,该测试会在完成Linux测试以后进行。
另外的另外,我还希望能测试IIS 7.5 fastcgi的情况,但是因为这个电脑默认装的是xp,要转win7测试。我的笔记本虽然是win7,但是因为硬件条件不同,全部的测试要重新进行一次。这个会放到最后进行。