1. 云栖社区>
  2. PHP教程>
  3. 正文

hhvm介绍和简单的本地压测对比

作者:用户 来源:互联网 时间:2017-12-01 09:35:46

简单介绍对比HHVM地压

hhvm介绍和简单的本地压测对比 - 摘要: 本文讲的是hhvm介绍和简单的本地压测对比,HHVM介绍 HHVM(HipHop Virtual Machine)是Facebook开发的开源虚拟机,可以运行Hack(Facebook自己开发的)和PHP。使用just-in-time(JIT)的编译方式以及其他技术,让PHP代码的

HHVM介绍

HHVM(HipHop Virtual Machine)是Facebook开发的开源虚拟机,可以运行Hack(Facebook自己开发的)和PHP。使用just-in-time(JIT)的编译方式以及其他技术,让PHP代码的执行性能大幅提升。据 Facebook介绍,与PHP 5.2引擎+APC相比,HHVM可以处理的Web请求吞吐量增加了9倍,而内存消耗减少了5倍。

因为好奇,我Google了一下,了解Facebook开发全新PHP虚拟机的 初衷。Facebook整个web系统已经非常庞大和复杂,想要重构整个系统提升性能变得非常困难。无论是迁移到性能更好的语言上,如 Java、C++、Go或者通过 RPC 将功能分离出来用其它语言实现,都需要投入巨大的成本。于是就从优化PHP着手,进而开发了全新的PHP虚拟机和Hack语言。

截至目前,在 github上的最新版本是3.15。

下面我们来看一下该版本的主要特性:

支持Hack和PHP 5

支持最新版的PHP 7主要特性

可以作为服务器单独运行

可以配置fast-cgi模式,配合apache或者nginx运行

安装 系统环境

型号名称: MacBook Pro

操作系统版本:10.12.1 (16B2657)

处理器名称: Intel Core i7

处理器数目: 1

核总数: 4

内存: 16 GB

meizus-MacBook-Pro:~ meizu$ php -vPHP 5.6.26 (cli) (built: Oct 10 2016 16:57:58) (DEBUG)Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans meizus-MacBook-Pro:~ meizu$ nginx -vnginx version: nginx/1.10.1 meizus-MacBook-Pro:~ meizu$ php-fpm -vPHP 5.6.26 (fpm-fcgi) (built: Oct 10 2016 16:58:00) (DEBUG)Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans

hhvm 安装过程可以参照 官方文档(好吧,需要翻墙呢,安装时间巨长)。

可以从源码编译,我们用最简单的方式吧,借助 Homebrew。

brew tap hhvm/hhvmbrew install hhvm

安装完毕,测试是否安装成功。直接以 fast-cgi的模式启用。

tcp socket

hhvm --mode server -d hhvm.server.type=fastcgi -d hhvm.server.port=9000

unix sock

hhvm --mode server -d hhvm.server.type=fastcgi -d hhvm.server.file_socket=/var/run/hhvm/sock

我们采用9005端口,以daemon方式启动。

meizus-MacBook-Pro:~ meizu$ sudo hhvm --mode daemon -d hhvm.server.type=fastcgi -d hhvm.server.port=9005Log file not specified under daemon mode./n/nmeizus-MacBook-Pro:~ meizu$ sudo lsof -i -n -P | grep hhvmhhvm 28227 root 14u IPv6 0x3672bb2a611b41f9 0t0 TCP *:9005 (LISTEN) 本地测试 系统参数调整

默认的超时时间参数TIME_WAIT是15秒,调整为1秒。

meizus-MacBook-Pro:~ meizu$ sysctl net.inet.tcp.mslnet.inet.tcp.msl: 15000meizus-MacBook-Pro:~ meizu$ sudo sysctl -w net.inet.tcp.msl=1000net.inet.tcp.msl: 15000 -> 1000meizus-MacBook-Pro:~ meizu$ sysctl net.inet.tcp.mslnet.inet.tcp.msl: 1000

查看最大文件描述符,调整为10000

meizus-MacBook-Pro:~ meizu$ ulimit -n256meizus-MacBook-Pro:~ meizu$ ulimit -n 10000meizus-MacBook-Pro:~ meizu$ ulimit -n10000 压测工具

siege

Mac安装可以参考这篇 文章

文件

测试本地的app.bbs.meizu.cn其中一个框架接口,输出H5页面。

测试的方法:逐渐调整并发量,使得结果出现失败的情况为止。

http://app.bbs.meizu.cn/index...

不涉及redis和mysql操作。

php-fpm

配置

154 location ~ .*/.(php|php5)?$ {155 # php-fpm156 fastcgi_pass 127.0.0.1:9000;157 # hhvm158 # fastcgi_pass 127.0.0.1:9005;159 fastcgi_index index.php;160 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;161 include fastcgi_params;162 163 }

siege压测结果

并发100,重复运行 10次

meizus-MacBook-Pro:~ meizu$ siege -c 100 -r 10 http://app.bbs.meizu.cn/index.php?mod=albumTransactions: 5000 hitsAvailability: 100.00 %Elapsed time: 7.22 secsData transferred: 142.46 MBResponse time: 0.06 secsTransaction rate: 692.52 trans/secThroughput: 19.73 MB/secConcurrency: 44.77Successful transactions: 5000Failed transactions: 0Longest transaction: 1.30Shortest transaction: 0.00

并发150,重复运行 20次

meizus-MacBook-Pro:~ meizu$ siege -c 150 -r 20 http://app.bbs.meizu.cn/index.php?mod=albumTransactions: 14416 hitsAvailability: 99.04 %Elapsed time: 20.25 secsData transferred: 408.29 MBResponse time: 0.13 secsTransaction rate: 711.90 trans/secThroughput: 20.16 MB/secConcurrency: 91.16Successful transactions: 14526Failed transactions: 140Longest transaction: 1.51Shortest transaction: 0.00 hhvm

配置

154 location ~ .*/.(php|php5)?$ {155 # php-fpm156 # fastcgi_pass 127.0.0.1:9000;157 # hhvm158 fastcgi_pass 127.0.0.1:9005;159 fastcgi_index index.php;160 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;161 include fastcgi_params;162 163 }

siege压测结果

并发100,重复运行 10次

meizus-MacBook-Pro:~ meizu$ siege -c 100 -r 10 http://app.bbs.meizu.cn/index.php?mod=albumTransactions: 5000 hitsAvailability: 100.00 %Elapsed time: 3.87 secsData transferred: 139.07 MBResponse time: 0.00 secsTransaction rate: 1291.99 trans/secThroughput: 35.94 MB/secConcurrency: 5.39Successful transactions: 5000Failed transactions: 0Longest transaction: 0.15Shortest transaction: 0.00

并发150,重复运行 20次

meizus-MacBook-Pro:~ meizu$ siege -c 150 -r 20 http://app.bbs.meizu.cn/index.php?mod=albumTransactions: 15000 hitsAvailability: 100.00 %Elapsed time: 7.91 secsData transferred: 417.22 MBResponse time: 0.01 secsTransaction rate: 1896.33 trans/secThroughput: 52.75 MB/secConcurrency: 21.85Successful transactions: 15000Failed transactions: 0Longest transaction: 0.50Shortest transaction: 0.00

并发200,重复运行 20次

Transactions: 19885 hitsAvailability: 99.66 %Elapsed time: 9.56 secsData transferred: 548.19 MBResponse time: 0.03 secsTransaction rate: 2080.02 trans/secThroughput: 57.34 MB/secConcurrency: 57.46Successful transactions: 19892Failed transactions: 67Longest transaction: 1.36Shortest transaction: 0.00 简单的对比结果

在当前测试环境(有资料显示,最新版的PHP 7的性能和hhvm差不多了),和保证正确率的基础上,hhvm有更大的并发量,响应也更快速。

就并发150,重复运行 20次的情况做对比

完成处理次数 14416 15000 +584 成功率 99.04% 100% +9.96% 耗时 20.25 secs 7.91 secs -12.34 secs 数据传输 408.29 MB 417.22 MB +9MB 响应耗时 0.13 secs 0.01 secs -0.12secs 平均每秒处理请求数 711.90 1896.33 +1184 平均每秒传送数据 20.16 MB/sec 52.75 MB/sec +32.59 MB/sec 实际最高并发连接数 91.16 21.85 -70 成功处理次数 14526 15000 失败的请求数 140 0 每次传输所花最长时间 1.51 0.50 -1 每次传输所花最短时间 0.00 0.00

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索简单 , 介绍 , 对比 , HHVM 地压 ,以便于您获取更多的相关知识。