HHVM vs PHP7
1. 结论
引擎+模式 | 吞吐 |
---|---|
HHVM非repo模式 | 834 |
HHVMrepo模式 | 1093 |
Php7 opcache.revalidate_freq 设置0 | 800 |
Php7 opcache.revalidate_freq设置60 | 844 |
之前测试过一次混合部署的数据,但是那样不是很准确,会受到mysql等干扰(穷啊,没有同机房、同交换机下的其他测试机),所以采用了cpu隔离的方式将hhvm、mysql和httpload分别进行隔离(绑定cpu用taskset):
Php和hhvm绑定cpu 在0-6核(7个core,php绑定100个进程,hhvm绑定一个进程)
Mysql绑定cpu在8-10(3个core)
http绑定cpu在11(1个core)
测试这次都采用100个 work(进程或线程),并且把7个core都给打满,这样最终比较吞吐还是比较准确的,其他无干扰,数据如下:
引擎+模式 | 比例 |
---|---|
Php7(60) vs hhvm norepo | php7高于hhvm 是 1% |
Php7(0) vs hhvm norepo | hhvm 高于php 7 是 4% |
Php7(60) vs hhvm repo | hhvm 高于php7 是 30% |
Php7(0) vs hhvm repo | hhvm 高于php 7 是 37% |
Hhvm norepo vs hhvm repo | hhvm repo高于hhvm norepo 是 31% |
work除了100外也设置为24测试了,吞吐hhvm和php7都会适当提升10%左右,但是相对比例都跟如上接近。
综上,php7 跟hhvm norepo模式性能差不多,Php7 的opcache.revalidate_freq 0和60差距不大,我们就取最优的来对比吧(60),hhvm repo模式比php7高30%,这是个相对的测试,测试的wordpress,但是repo模式我们还未在线上使用,因为需要预先线下编译,和之前PHP的流程上有些冲突,需要一套预案,目前用途广的还是非repo模式(facebook默认是repo模式)。
Repo模式比非repo模式在wp下高接近31%的,这个目前没有prof后期我会进行prof分析出结果继续跟进。
HHVM 版本是3.0.1 release
Php7是2014.12.18 dev
2. 测试环境
操作系统:redhat 4.3
Cpu:12 cores Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
内存:16G
预热:并发30,fetch 3000次
测试:并发50, fetch 30000次
应用:wordpress 4.1
3. Hhvm
ThreadCount:100
预热并发30,3000次
3.1. Hhvm 非repo 模式
834
3.2. Hhvm repo 模式
1093
4. Phpng
进程数量:100
配置:
max_execution_time=600
memory_limit=128M
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0
zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0
extension=mbstring.so
extension=mysql.so
4.1. Phpng opcache.revalidate_freq 0
800
4.2. Phpng opcache.revalidate_freq 60
844
所有留言