验证 Apache 2.4 的 PHP-FPM 和 mod_php
我看到了一个令人担忧的言论,所以要验证一下。
Apache2.4及以上版本已经集成了mod_proxy_fcgi,因此与php-fpm的组合是可行的。这样做还能提高内存效率。
因此,當對nginx+php-fpm5.6與apache2.2+mod_php5.6進行基准测试時,由於apache2.2+mod_php5.6得分更高,所以……
※可能有错误的测量方法…
只想知道结论的人们请拢耳听着。
「失败的请求」较少,FPM可能更出色吗?
前提
-
- PHP と Apache はソースからコンパイル
-
- Fibonacci.php はChromeからアクセス
-
- ab は LISTEN IP に対して
- 一回ごとにゲストOSリブート
规格
主持人
-
- OS:Windows 10 Home 64bit
-
- CPU:Intel® Core™ i5-3570
-
- メモリ:8GB
- ストレージ:インテル 330 Series SSDSC2CT120A3K5
请提供更多上下文信息,让我能够更准确地翻译。
-
- VMware(R) Player 6.0.7 build-2844087
-
- OS:CentOS Linux release 7.2.1511 (Core)
-
- メモリ:1024MB
- CPU:1
php-fpm (FastCGI Process Manager)
apache2.4.18 可以被简洁地表达为 “阿帕奇2.4.18″。
"./configure" \
"--prefix=/usr/local/apache2.4-test1" \
"--enable-mods-shared=all" \
"$@"
Server version: Apache/2.4.18 (Unix)
Server built: Mar 19 2016 11:45:13
Server's Module Magic Number: 20120211:52
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
php-7.0.4
'./configure' \
'--prefix=/usr/local/php-7.0.4-fpm' \
'--enable-fpm' \
'--with-fpm-systemd' \
"$@"
[global]
include=/usr/local/php-7.0.4-fpm/etc/php-fpm.d/*.conf
[www]
prefix = /usr/local/php-7.0.4-fpm/$pool
user = nobody
group = nobody
listen = socket
listen.owner = daemon
listen.group = daemon
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
斐波那契.php
求解不使用记忆化递归的情况下的getFib(35)。
getFib(35)的答案是24157817。
处理所需时间为1.0560688972473毫秒。
使用记忆化递归计算getFibByMemo(35)的值。
getFibByMemo(35)的答案是24157817。
处理所需的时间为9.9897384643555E-5毫秒。
如果使用记忆化递归,甚至$n=100也没问题!
getFibByMemo(100)的答案为9.2737269219308E+20192.168.0.31
用AB命令在$IP上对Fibonacci.php发起100个请求,每个请求并发量为10个。
这是ApacheBench,版本2.3 <$修订版本: 1706008 $>
版权所有1996年Adam Twiss,Zeus Technology Ltd,http://www.zeustech.net/
许可给Apache Software Foundation,http://www.apache.org/。
正在对192.168.0.31进行基准测试(请耐心等待)…..完成
服务器软件:Apache/2.4.18
服务器主机名:192.168.0.31
服务器端口:80
文档路径:/Fibonacci.php
文档长度:455字节
并发级别:10
测试所需时间:116.601秒
完成的请求:100
失败的请求:28
(连接:0,接收:0,长度:28,异常:0)
总传输量:62471字节
HTML传输量:45471字节
每秒请求数:0.86个/秒
每个请求的时间:11660.100毫秒
每个请求的时间:1166.010毫秒
传输速率:0.52 [千字节/秒] 接收
连接时间(毫秒)
最小值 平均值[+/-标准差] 中位数 最大值
连接: 0 0 0.1 0 1
处理: 3365 11321 1561.3 11646 14213
等待: 3354 11321 1561.9 11646 14213
总计: 3365 11322 1561.2 11646 14213
某一时间段内已响应请求的百分比(毫秒为单位)
50% 11646
66% 11823
75% 11980
80% 12021
90% 12280
95% 12395
98% 12979
99% 14213
100% 14213(最长的请求)
Mod_php
apache2.4.18是一个版本号。
"./configure" \
"--prefix=/usr/local/apache2.4-test2" \
"--enable-mods-shared=all" \
"--with-mpm=prefork" \
"$@"
Server version: Apache/2.4.18 (Unix)
Server built: Mar 19 2016 21:29:05
Server's Module Magic Number: 20120211:52
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
PHP-7.0.4是令一个版本的PHP程序。
'./configure' \
'--prefix=/usr/local/php-7.0.4-mod' \
'--with-fpm-systemd' \
'--with-apxs2=/usr/local/apache2.4-test2/bin/apxs' \
'--disable-cgi' \
"$@"
斐波那契.php
求解不使用记忆化递归的情况下的 getFib(35)
getFib(35)的答案是24157817
处理时间为1.0643901824951毫秒。
使用记忆化递归方法求得getFibByMemo(35)的结果。
getFibByMemo(35)的答案是24157817。
处理所用时间为9.918212890625E-5毫秒。
使用记忆化递归的话,甚至可以计算$n=100$!!
通过使用getFibByMemo(100),答案为9.2737269219308E+20。
使用ab命令对”http://$IP/Fibonacci.php”进行100次请求,每次并发10次。
这是ApacheBench,版本2.3 <$版本: 1706008 $>
版权所有1996年Adam Twiss,Zeus Technology Ltd,http://www.zeustech.net/
授权给The Apache Software Foundation,http://www.apache.org/
基准测试192.168.0.31(请耐心等待)…..完成
服务器软件:Apache/2.4.18
服务器主机名:192.168.0.31
服务器端口:80
文件路径:/Fibonacci.php
文件长度:453字节
并发级别:10
测试所用时间:105.249秒
完成请求数:100
失败请求数:95
(连接:0,接收:0,长度:95,异常:0)
总传输量:65577字节
HTML传输量:45477字节
每秒请求数:0.95 #/秒
每个请求的时间:10524.895毫秒
每个请求的时间:1052.490毫秒
传输速率:0.61 [Kbytes/sec] 接收
连接时间(毫秒)
最小值 平均值[±标准差] 中位数 最大值
连接:0 0 0.2 0 1
处理:8146 10459 722.6 10478 13598
等待:8146 10453 729.3 10478 13598
总计:8146 10459 722.6 10478 13598
在一定时间内处理请求的百分比(毫秒)
50% 10478
66% 10535
75% 10625
80% 10758
90% 10902
95% 10954
98% 13542
99% 13598
100% 13598(最长的请求)
用PHP通过递归解决斐波那契数列+与记忆化递归进行比较- Fibonacci.php