- 本文地址: https://www.laruence.com/2014/12/18/2976.html
- 转载请注明出处
其实我已经在很多场合说过, PHP7的性能已经和HHVM相当了..
但是呢, 总是有人问...
另外感觉微博并不能特别好的留存, 所以我写个BLOG吧.
这篇BLOG, 我将进行最客观的对比测试, 就用ab来压测一下Wordpress的首页..
来对比看看PHP7和HHVM-3.2.0的性能在Wordpress上的性能对比.
机器配置:
CPU: 4 X Intel(R) Xeon(R) CPU E5410 @ 2.33GHz Mem: 16G
环境配置:
Nginx + PHP-FPM Nginx + HHVM
软件版本:
PHP7 - 79354ba6d0d6a1a4596f9ac66ee9bc3a34ed972b HHVM-3.2.0
HHVM的配置:
$ cat /etc/hhvm/server.ini ; php options pid = /var/run/hhvm/pid ; hhvm specific hhvm.server.host = 127.0.0.1 hhvm.server.port = 9000 hhvm.server.type = fastcgi ;hhvm.server.file_socket = /var/run/hhvm/hhvm.sock hhvm.server.default_document = index.php hhvm.log.level = Error hhvm.log.always_log_unhandled_exceptions = true hhvm.log.runtime_error_reporting_level = 8191 hhvm.log.use_log_file = true hhvm.log.file = /var/run/hhvm/error.log hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc hhvm.mysql.typed_results = false
PHP的配置(pm.max_children和你的cpu核数相当):
php-fpm.conf: pm = static pm.max_children = 4 php.ini (opcache): zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.save_comments=0 opcache.fast_shutdown=1 opcache.enable_file_override=1
为了显示测试的客观性, 我决定采用屏幕录制的办法, 我会把我测试的时候的过程录制下来. 大家参看即可..
视频:
测试结果如下(俩个测试都会首先用100个请求预热, 然后开始100个并发, 10000个请求ab压测):
PHP7:
Concurrency Level: 100 Time taken for tests: 38.726 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 89290000 bytes HTML transferred: 86900000 bytes Requests per second: 258.22 [#/sec] (mean) Time per request: 387.260 [ms] (mean) Time per request: 3.873 [ms] (mean, across all concurrent requests) Transfer rate: 2251.64 [Kbytes/sec] received
HHVM-3.2
Document Path: /wordpress/ Document Length: 8690 bytes Concurrency Level: 100 Time taken for tests: 43.296 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 89260000 bytes HTML transferred: 86900000 bytes Requests per second: 230.97 [#/sec] (mean) Time per request: 432.957 [ms] (mean) Time per request: 4.330 [ms] (mean, across all concurrent requests) Transfer rate: 2013.31 [Kbytes/sec] received
结论,
PHP7 - 258.22 QPS
HHVM - 230.97 QPS
PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM(PS: 我是想基于HHVM-3.3测试, 但是我的Ubuntu 13.10实在是编译不成功, 所以拿3.2测试, 他们的差别也不会太大).
最后, PHP7将会在明年10月发布正式版, 我相信我们还会让它更快, 大家拭目以待吧 🙂
PS: 我之所以发这个文章, 还有一个原因, 是因为某公司发表了一系列的文章来谈他们迁移HHVM. 其中有一这么一段, 是他们发现业务在PHP5.5(注意还不是7哦)和HHVM之间并没有他们期望的大的性能区别, 于是他们针对HHVM和PHP5.5分别做了优化以后, 再来对比, 得出一个"通用结论".
那么问题就来了, 这就相当于是用HHVM写了个功能,然后用PHP又写了一个功能, 这俩者代码不完全相同, 逻辑不完全相同, 你能用这个对比来做出一个"通用结论"么?
因为, 你针对PHP的优化, 到底做了多少, 做的好不好, 很难评价, 也许换个人做优化, 还能得出完全相反的结论(就比如, 我们基于PHP5.4, 也做了一些优化, 让微博手机服务端的性能提升了2.6倍, 服务器减少了60%, 这又怎么说: 优化介绍: 微博LAMP性能优化之路)?
那个文章还有这么一句:"hhvm是基于php5.4的语法标准,因此,hhvm和php5.5与我们目前用的php5.2都存在语法差异,php5.5差异更大一些。"
这个叫做差异? 5.5对5.2那可是99%的兼容... 你把HHVM的不兼容点和PHP5.5的新语法都叫做差异? 那是一回事么?
目前我仍然使用php 5.6,可以和我分享php 7的特殊功能吗? 谢谢!
[…] 本文地址: https://www.laruence.com/2014/12/18/2976.html […]
best post
nice post.
4核16G
fpm.max_children = 4
我的问题是:
max_children只能配置到核数一样的数字吗?16G 内存那不是没什么用处?只要4G 就可以?
16G 内存能不能放max_children到500?
虽然自己也是学计算机网络的,当是还是看的有点吃力
雁过留声,风过无痕
开启Hugepage后,WP的性能反而有些降低,不知道为什么。
PHP是世界上最好的语言
PHP7一统江湖~
我的小站也收集了一些PHP技术资料,欢迎各位逛逛
http://log4geek.cc/category/php/
即使是现在,依然很相信PHP7的能力!!
相比于HVMM,PHP7的兼容性相对要好一些,希望PHP7能够发展的更好,也感谢开源社区的无私贡献。
php7性能真心不错,php7的前途越来越光明了。
2
@Anonymous, “多进程模型也会带来无法在运行时加载大型词典的弊端, “呵呵了, 你知道共享内存么? 你知道共享内存可以加锁么? 你知道这个模型下经典的0/1切换方案么?
php7 即便性能与 hhvm 相当,多进程模型也会带来无法在运行时加载大型词典的弊端,真实的业务场景不是总能做到 share nothing 的。
同理,多线程的 crash 也未必是多大运维压力,如果你有 1000 台 server,面临的完全是另一个层面的问题。
某公司在优化方面做的功夫是你看不到的,请不要因为管过小小微博就妄言需要几十万台 server 才能驱动的服务。
很期待哟
相信PHP7,对于其他复杂的东西,真心不怎么想学,浪费时间,还是PHP简单易用
对于 HHVM 和 PHP 7 的对比没看出来有什么,只看到 worldpress 的性能差的到家了。
其实我觉得这也不尽公平。
PHP7目前还没有支持较广的稳定版(相对主流CMS而言。
而HHVM已经能较好的支持主流CMS
博客不错哦
class a{
public static function s(){
//这里有没有办法判断是静态调用还是非静态调用,
//如果可以判断.怎么来获取调用的对象呢?
}
};
$sss=new a();
$sss->s();
a::s();
请教 Laruence 望答复
wordpress 的压测没有做过。wordpress 的QPS因该跟DB也有一点关系吧,
我们压测一般是用纯CI框架压的,php5.4 四核 2.3 虚拟机
QPS大概是 一千四左右。
Hi Laruence, thanks for this benchmark.
But I would like to know about PHP7 and HHVM configuration. Did you apply special tuning? If yes, was it the best performance tuning for both? Unless, you use “stock” configuration?
Maybe you answer this question in your article, but unfortunately, I don’t speak neither read chinese 🙁
Thanks.
Julien.
期待正式版本发布。。。
感谢付出。。
Thanks for sharing your thoughts. I really appreciate your efforts
and I will be waiting for your further post thanks once
again.
我希望PHP7有强类型约束。
[…] 附: 新浪鸟哥做的php7对应hhvm的测试比较 […]
@tyftyftyf 恩, 你是对的, 我搞错了, 我刚刚重新跑了一下测试, 实际上几乎没有差别(不稳定的, 能差了2个qps) , 考虑更新视频太麻烦, 对结论的影响也不大, 我就不修改了 . :), thanks
作为一名wordpressaihaozhe,guolaizhic一下大phpng,博主加油
[…] PHP7 VS HHVM (WordPress) […]
@雪候鸟,博主说的有道理,不过关于文件检查那块,我看http://php.net/manual/en/opcache.configuration.php#ini.opcache.validate-timestamps讲的是,opcache.validate_timestamps=0的时候,opcache.revalidate_freq会被忽略,所以net effect还是永远都不检查。不是么?:p
@tyftyftyf 你理解错了, 检查文件变更的是这个: opcache.revalidate_freq=60 表示60s检查一次. 而HHVM如果开启repo模式, 那意思是什么呢? 就是离线编译然后上线, 这个已经不是我们要考虑的方式了. Anyway, 恩.. 其实我只是想说的是性能相当. 🙂
给博主提几点注意噢:
HHVM在那个配置下仍然会每个请求都检查文件是否变更,而PHP7已经用了opcache.validate_timestamps=0关闭了这种检查。HHVM用Repo.Authoritative关闭检查之后性能又能提示20%左右。
HHVM会把字节码存到本地数据库,所以重启之后不需要重新编译。PHP则每次重启都得填充OpCache。(这里是对bytecode的处理作比较,HHVM还会把热路径进一步编译成机器码)
其他方面的评测还是非常客观的。支持PHP,支持HHVM,期待PHP7!
“另外它采用JIT, 那么意味着, 重启以后要预热, 没有预热的情况下, 性能较为糟糕。”—-完全看不懂啊!!什么是“预热”??鸟哥普及一下吧、
额,直接PHP7了,而且明年10月份就发布。。。
意识是PHP6被跳过了?
[…] 最后,期待PHP7,参考鸟哥的博客《php7 VS HHVM》 […]
http://www.cnblogs.com/hxdoit/p/4155436.html
php-fpm正在生成页面时,浏览器刷新后,php-fpm并不会退出.浏览器关闭请求后,nginx会通知到php-fpm,但php-fpm忽略了这个通知,继续处理,直到发送处理结果时,才知道了连接已经被关闭.我想在这里,php-fpm在连接的处理上是不是还存在可以优化的空间,也就是nginx通知php-fpm连接结束时,php-fpm应该退出而不是继续执行.
学习下
鸟哥
http://lamp.baidu.com/2014/12/31/hhvm-vs-phpng/
永远支持鸟哥
http://www.douban.com/group/topic/12629451/?qq-pf-to=pcqq.group 第五个鸟哥上榜
真心希望早点发布。这样子我们可以应用了。
5.4 都还没完全普及,7 就要出了啊。。。好快,
估计到时候直接把 6 跳过去?
期待
明年10月,如果能再早就好了!
看得出来,鸟哥很火大…………
支持,期待7。评测就应该像鸟哥这样很客观
鸟哥好久不写博客了,微博上几次留言的问题也没有回复。
期待 PHP 7 的到来,向鸟哥努力学习!
支持一下,向您学习
支持
别在黑我PHP了
别再黑我大PHP了
期待,希望php 更强更好!
HHVM编译安装太tm蛋疼了
顶 php是最好的语言
PHP一定会是世界上最好的语言,我认真的!!
我只想知道到时候我从5.4升级到7会不会出很多bug
打倒hhvm, php7雄起!
别再黑我大PHP了
php是最好的语言!
别再黑我大PHP了!
期待PHP!
别在黑我大PHP了!
期待php7
HHVM在处理静态内容方面变现很差
期待PHP7
http://lamp.baidu.com/2014/10/16/php-engine-investigation/
PHP7的正式版向下兼容5.3+吗
更加爱python和scala 哈哈哈哈哈。目前在用java = =!
php必须是最好的语言,我认真地
php是世界上最好的语言
顶 php是最好的语言
1r
别在黑我大PHP了
不能忍
期待PHP7…
赞一个,别再黑我大PHP了。。哈哈
都在努力提升性能,求不黑php!@xxx?
php是最好的语言
板凳
大赞…非常期待PHP7啊啊啊啊
支持一下,看好PHP7
顶鸟哥
这发博客频率也太低了…哈哈
期待PHP7…
沙发。。。