2009年4月7日星期二

评: php-fpm 与 spawn-cgi 对比测试

www.86-00.com 网站测试用 lighttpd 与 Nginx 都是用 spawn-cgi 都在Nginx上却是不太稳定.现在看转 php-fpm 再测试一下.

php-fpm 与 spawn-cgi 对比测试
1. 软件版本
Nginx 0.7.17
php 5.2.6
php-fpm 0.5.9
编译参数
./configure –prefix=/usr/local/webserver/php \
–with-config-file-path=/usr/local/webserver/conf \
–enable-fastcgi \
–enable-fpm \
–with-fpm-conf=/usr/local/webserver/conf/php-fpm.conf \
–enable-force-cgi-redirect \
–with-gd \
–with-jpeg-dir \
–with-png-dir \
–enable-gd-native-ttf \
–with-freetype-dir \
–with-mysql=/usr/local/webserver/mysql \
–with-libxml-dir \
–with-mcrypt \
–with-mhash \
–with-curl \
–with-curlwrappers \
–with-zlib-dir \
–with-zlib \
–with-pear \
–with-openssl \
–without-pdo-sqlite \
–without-sqlite \
–disable-debug \
–disable-rpath \
–without-iconv \
–enable-bcmath \
–enable-pcntl \
–enable-mbstring \
–enable-exif \
–enable-zip \
–enable-ftp

3. 补丁安装方法
下载fpm补丁
将fpm加入php
patch -p1 < php-5.2.6-fpm-0.5.9.diff
在./configure后加入–enable-fastcgi –enable-fpm 以启用fpm

4.测试方法
取服务端的一个页面
var_dump($_SERVER);
phpinfo();
?>
另一台服务器发起请求
./http_load -parallel 25 -seconds 10 urls

5.CPU以及内存使用情况
对使用fpm启动的php-cgi以及spawn-fcgi启动的php-cgi进行比对
使用http_load对两者进行访问
然后获取服务器内的内存使用以及响应速度
fpm的使用后CPU下降的比较缓慢.而spawn-cgi的进程cpu下降很快.
很多情况下是使用完后进程CPU便回到0.0

php-fpm
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
root 27724 0 1.2 103468 3400 ? Ss 02:45 00:00
nobody 27725 0.6 2.1 103988 5672 ? S 02:45 00:00
nobody 27726 0.5 2.1 103988 5672 ? S 02:45 00:00
nobody 27727 0.6 2 103988 5352 ? S 02:45 00:00
nobody 27728 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27729 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27730 0.6 2 103988 5348 ? S 02:45 00:00
nobody 27731 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27732 0.7 2 103988 5344 ? S 02:45 00:00
nobody 27733 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27734 0.2 2 103988 5340 ? S 02:45 00:00
nobody 27735 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27736 0.3 2 103988 5344 ? S 02:45 00:00
nobody 27737 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27738 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27739 0.7 2 103988 5348 ? S 02:45 00:00
nobody 27740 0.8 2 103988 5352 ? S 02:45 00:00
nobody 27741 0.4 2 103988 5348 ? S 02:45 00:00
nobody 27742 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27743 0.6 2 103988 5344 ? S 02:45 00:00
nobody 27744 0.5 2 103988 5348 ? S 02:45 00:00
nobody 27745 0.7 2 103988 5352 ? S 02:45 00:00
nobody 27746 0.4 2 103988 5348 ? S 02:45 00:00
nobody 27747 0.5 2 103988 5344 ? S 02:45 00:00
nobody 27748 0.6 2 103988 5348 ? S 02:45 00:00
nobody 27749 0.7 2 103988 5352 ? S 02:45 00:00

spwan-cgi
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
www 27760 0 2.4 103452 6320 ? Ss 02:47 00:00
www 27761 0.2 2.1 103976 5548 ? S 02:47 00:00
www 27762 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27763 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27764 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27765 1.4 1.9 103980 5224 ? S 02:47 00:00
www 27766 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27767 0.4 1.9 103980 5220 ? S 02:47 00:00
www 27768 0.5 1.9 103980 5212 ? S 02:47 00:00
www 27769 0.5 1.9 103980 5216 ? S 02:47 00:00
www 27770 2.4 1.9 103980 5236 ? S 02:47 00:01
www 27771 3.1 2 103980 5248 ? S 02:47 00:01
www 27772 2.4 1.9 103980 5236 ? S 02:47 00:01
www 27773 1.3 1.9 103980 5224 ? S 02:47 00:00
www 27774 0.4 1.9 103980 5212 ? S 02:47 00:00
www 27775 0.4 1.9 103980 5212 ? S 02:47 00:00
www 27776 0.3 1.9 103980 5216 ? S 02:47 00:00
www 27777 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27778 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27779 0.2 1.9 103980 5212 ? S 02:47 00:00
www 27780 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27781 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27782 0.1 1.9 103980 5212 ? S 02:47 00:00
www 27783 0 1.9 103980 5212 ? S 02:47 00:00
www 27784 0 1.9 103980 5212 ? S 02:47 00:00
www 27785 0 1.9 103980 5212 ? S 02:47 00:00

6.反应时间
fetches/sec
php-fpm
264.468
269.657
266.5
267.7
267.334
spawn-cgi
246.153
258.742
256.1
256.9
251.6

7.测试结果
php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内
而启动,重启都可以从php/sbin/php-fpm中进行
更方便的是修改php.ini后可以直接使用php-fpm reload进行加载
无需杀掉进程就可以完成php.ini的修改加载
结果显示使用php-fpm可以使php有不小的性能提升
php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀
而spawn-cgi控制的进程CPU下降的很快.而内存分配的比较不均匀.
有很多进程似乎未分配到,而另外一些却占用很高.
可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降
而php-fpm合理的分配.导致总体响应的提到以及任务的平均
-------------------------------------------
i3server
i3server
www.86-00.com

没有评论: