HHVM 3.11.0 发布,执行 PHP 代码的虚拟机
1楼:动弹 发表于 2015-12-10 15:38 回复此评论
2楼:kideny 发表于 2015-12-10 15:56 回复此评论
3楼:O油菜 发表于 2015-12-10 16:06 回复此评论
4楼:TiMoLove 发表于 2015-12-10 16:12 回复此评论
5楼:newwell 发表于 2015-12-10 16:42 回复此评论
6楼:冰力 发表于 2015-12-10 17:14 回复此评论
Xubuntu(i5-3230M)上,简单的time curl WordPress首页测试,PHP7 Beta2比HHVM 3.8.1快32%!
PHP7和HHVM均进行了热身,PHP7缓存有opcode,HHVM缓存有bytecode(hhbc即hiphop bytecode).
如果对测试数据存在质疑,欢迎下载我在Ubuntu上打包的适用于64位的Linux的PHP7 Beta2 with Swoole和HHVM 3.8.1自行测试:
除了解压即用的二进制包,里面还有详细的打包步骤.
引用来自“eechen”的评论
Xubuntu(i5-3230M)上,简单的time curl WordPress首页测试,PHP7 Beta2比HHVM 3.8.1快32%!
PHP7和HHVM均进行了热身,PHP7缓存有opcode,HHVM缓存有bytecode(hhbc即hiphop bytecode).
如果对测试数据存在质疑,欢迎下载我在Ubuntu上打包的适用于64位的Linux的PHP7 Beta2 with Swoole和HHVM 3.8.1自行测试:
除了解压即用的二进制包,里面还有详细的打包步骤.
引用来自“eechen”的评论
Xubuntu(i5-3230M)上,简单的time curl WordPress首页测试,PHP7 Beta2比HHVM 3.8.1快32%!
PHP7和HHVM均进行了热身,PHP7缓存有opcode,HHVM缓存有bytecode(hhbc即hiphop bytecode).
如果对测试数据存在质疑,欢迎下载我在Ubuntu上打包的适用于64位的Linux的PHP7 Beta2 with Swoole和HHVM 3.8.1自行测试:
除了解压即用的二进制包,里面还有详细的打包步骤.
@卖红薯 HHVM是多进程架构,而PHP-FPM是多进程架构,只对比单个进程,那么PHP-FPM内存占用比内存占用比HHVM少了83%.开启8个工作进程时内存占用跟HHVM相近(160MB).如果HHVM官方非要拿开启80个PHP-FPM占用的内存比,那就没意思了.CPU核心就像机器,进程就像工人,不是说工人越多生产效率就越高.对于4个核心的机器,开8个工作进程足够了.在ab压力测试WordPress首页中,开4个工作进程跟开8个工作进程成绩是一样的,成绩接近HHVM.不过上面也说了,在单次请求中,PHP7完胜HHVM.
引用来自“eechen”的评论
@卖红薯 HHVM是多进程架构,而PHP-FPM是多进程架构,只对比单个进程,那么PHP-FPM内存占用比内存占用比HHVM少了83%.开启8个工作进程时内存占用跟HHVM相近(160MB).如果HHVM官方非要拿开启80个PHP-FPM占用的内存比,那就没意思了.CPU核心就像机器,进程就像工人,不是说工人越多生产效率就越高.对于4个核心的机器,开8个工作进程足够了.在ab压力测试WordPress首页中,开4个工作进程跟开8个工作进程成绩是一样的,成绩接近HHVM.不过上面也说了,在单次请求中,PHP7完胜HHVM.
12楼:gallex 来自 Android 发表于 2015-12-10 19:34 回复此评论
引用来自“eechen”的评论
@卖红薯 HHVM是多进程架构,而PHP-FPM是多进程架构,只对比单个进程,那么PHP-FPM内存占用比内存占用比HHVM少了83%.开启8个工作进程时内存占用跟HHVM相近(160MB).如果HHVM官方非要拿开启80个PHP-FPM占用的内存比,那就没意思了.CPU核心就像机器,进程就像工人,不是说工人越多生产效率就越高.对于4个核心的机器,开8个工作进程足够了.在ab压力测试WordPress首页中,开4个工作进程跟开8个工作进程成绩是一样的,成绩接近HHVM.不过上面也说了,在单次请求中,PHP7完胜HHVM.
实践是检验真理的唯一标准.在WordPress这个真实的不能再真实PHP明星应用的测试中,PHP生成首页这个工程就是一个CPU密集型计算.
根据服务器内存来设置PHP-FPM进程数非常不合理,把内存分配给MySQL,Memcached,Redis,Linux磁盘缓存(buffers/cache)这些服务显然更合适.过多的PHP-FPM进程反而会增加CPU上下文切换的开销,PHP代码中应该尽量避免curl或者file_get_contents这些可能会产生较长网络I/O耗时的代码.如果要异步执行耗时较长的任务,可以 pclose(popen('/path/to/task.php &', 'r')); 打开一个进程来进行,或者借助消息队列,总而言之,就是要避免阻塞到PHP-FPM工作进程.
上传和下载就是典型的I/O密集型操作.
需要PHP认证的下载操作可以委托为Nginx的AIO线程池:
header("X-Accel-Redirect: $file_path");
至于上传操作,比如可以建立一个监听9001端口名为upload的PHP-FPM进程池(pool),
专门负责处理上传操作,避免上传操作阻塞到监听9000端口的计算密集的www进程池.
这时upload进程池多开点进程也无所谓:
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
listen = 127.0.0.1:9001
pm = static
pm.max_children = 8
利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
16楼:Smile月光 来自 iPhone 发表于 2015-12-11 00:54 回复此评论
引用来自“eechen”的评论
实践是检验真理的唯一标准.在WordPress这个真实的不能再真实PHP明星应用的测试中,PHP生成首页这个工程就是一个CPU密集型计算.
根据服务器内存来设置PHP-FPM进程数非常不合理,把内存分配给MySQL,Memcached,Redis,Linux磁盘缓存(buffers/cache)这些服务显然更合适.过多的PHP-FPM进程反而会增加CPU上下文切换的开销,PHP代码中应该尽量避免curl或者file_get_contents这些可能会产生较长网络I/O耗时的代码.如果要异步执行耗时较长的任务,可以 pclose(popen('/path/to/task.php &', 'r')); 打开一个进程来进行,或者借助消息队列,总而言之,就是要避免阻塞到PHP-FPM工作进程.
页:
[1]