HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。

JIT就是HHVM高效率的所在,所谓字节码:是一种人类无法阅读的代码,专门用来给编译器高效执行的。当HHVM首次加载项目时,它会将所有的PHP代码转换成字节码;字节码的生成是与平台无关的。

机器码是一系列供CPU执行的指令。用过汇编的都应该清楚机器码,估计没人喜欢用汇编编程。通过编译器就可以把汇编转成机器码,然后供CPU处理。JIT(即时)编译器是指在运行时才会去编译字节码。字节码会存放在内存中,然后JIT编译器会根据需要加载并编译所涉的字节码。

通过以上技术,HipHop和HHVM获得了性能的提升。据官方介绍,与PHP 5.2引擎+APC相比,HHVM可以处理的Web请求吞吐量增加了9倍,而内存消耗减少了5倍。实际上HHVM之前有朋友留言提起过它,亲自测试过后发现HHVM在提升PHP处理速度上非常有优势,非常适合大型的网站。

最近,HHVM已经更新到了3.0版本,HHVM几乎已经完全支持PHP 5.5了,但还是有不少bug,所以不是所有应用程序都可以运行。因此,Facebook准备让最流行的20个开源PHP项目能够运行在HHVM上。第一个已经支持的项目就是Wordpress。不过对于国内的Discuz兼容还不太完美。

本篇文章来自 deamwork 博主,为大家分享一下HHVM+Nginx+FastCGI建站环境搭建过程,有兴趣的朋友可以一同来体验一下HHVM强悍性能。想要了解更多的有关于服务器优化的方法,这里有:

  • 1、均衡:免费空间+便宜VPS和OpenResty,Ngx_lua,Redis搭建系统负载均衡环境
  • 2、缓存加速:用Redis缓存来给WordPress站点加速-适用于Apache和Nginx
  • 3、安全机制:WordPress加速防护技巧:多重CDN和Better WP Security强化安全

HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上

一、HHVM安装方法

1、HHVM官网:

  • 1、官方网站:http://www.hhvm.com
  • 2、项目地址:https://github.com/facebook/hhvm

2、服务器操作系统:Debian7 x64 ,搭建LNMH架构,安装HHVM并采用Fastcgi与Nginx结合。现在我将开始介绍如何快速安装HHVM并采用Fastcgi与Nginx相结合,以方便添加虚拟主机。

3、我们这里选用的系统是debian,用debian有个好处添加完apt源以后可以快速安装HHVM。注意选择系统的时候一定要选择64位的系统不然无法安装。

4、首先我们要先进行一些安装前的步骤: sudo apt-get update

5、接下来我们添加HHVM的apt源,并安装HHVM:


wget http://dl.hhvm.com/conf/hhvm.gpg.key
sudo apt-key add hhvm.gpg.key
echo "deb http://dl.hhvm.com/debian wheezy main">> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y hhvm

6、如果是国内的主机请添加下面这个apt源,官方的apt源因为某些原因被Q了。


wget http://dl.hiphop-php.com/conf/hhvm.gpg.key
sudo apt-key add hhvm.gpg.key
echo "deb http://dl.hiphop-php.com/debian wheezy main">> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y hhvm

7、这个过程大概几分钟即可完成,会有Selecting Unpacking ,用时比较长

8、看到以下界面说明HHVM安装成功。

二、安装Fastcgi方法

1、接着我们运行这条命令安装Fastcgi ,执行以下命令:


sudo /usr/share/hhvm/install_fastcgi.sh #安装Fastcgi
sudo update-rc.d hhvm defaults #添加到开机启动
sudo service hhvm restart #重启HHVM

2、hhvm5接着我们查看一下端口开启没有:netstat –anp

3、OK~当我们完成上面步骤的时候已经安装完成了HHVM并开启了Fastcgi模式。

三、安装Nginx搭建LNMH

1、接下来将介绍安装Nginx并与HHVM相结合搭建LNMH架构,并添加虚拟主机。

2、首先我们先安装好Nginx,我们这里选用的是LinuxEye博客推出的lnmp一键包。


wget http://blog.linuxeye.com/lnmp.tar.gz
#wget http://blog.linuxeye.com/lnmp-full.tar.gz # 包含源码(官方下载太慢)
tar xzf lnmp.tar.gz
cd lnmp
#如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
./install.sh

3、我们只用安装Nginx和memcached即可,其他不用安装,Mysql数据库我们后面选择用apt安装。 (点击放大)

4、当我们安装完成了Nginx后,备份lnmp目录下的vhost.sh文件,然后手动修改vhost.sh让nginx添加虚拟机时自带Fastcgi。找到下面这段:(大约在314行)


[ ! -d $web_install_dir/conf/vhost ] && mkdir $web_install_dir/conf/vhost
cat > $web_install_dir/conf/vhost/$domain.conf << EOF
server {
listen 80;
server_name $domain$moredomainame;
$N_log
index index.html index.htm index.jsp index.php;
include $rewrite.conf;
root $vhostdir;
#error_page 404 /404.html;
if ( \$query_string ~* ".*[\;'\<\>].*" ){return 404;}
$anti_hotlinking
`echo -e $ngx_pagespeed`
location ~ .*\.(php|php5)?$ {#fastcgi_pass remote_php_ip:9000;fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;}
......

5、把它修改成下面这样:


[ ! -d $web_install_dir/conf/vhost ] && mkdir $web_install_dir/conf/vhost
cat > $web_install_dir/conf/vhost/$domain.conf << EOF
server {
listen 80;
server_name $domain$moredomainame;
$N_log
index index.html index.htm index.jsp index.php;
include $rewrite.conf;
root $vhostdir;
#error_page 404 /404.html;
if ( \$query_string ~* ".*[\;'\<\>].*" ){return 404;}
$anti_hotlinking
`echo -e $ngx_pagespeed`
location ~ .*\.(php|php5)?$ {fastcgi_pass 127.0.0.1:9000;#fastcgi_pass unix:/var/run/hhvm/hhvm.sock;fastcgi_index index.php;include fastcgi.conf;}
......

6、这样当我们添加虚拟主机时候就自动开启了Fastcgi。

7、可能有人又会问了,为什么我用IP访问的时候无法直接访问IP目录下面的PHP文件和程序? 因为我们还没有修改默认的nginx.conf文件,接下来我们就要修改这个文件,让我们访问IP的时候可以直接访问PHP程序。

8、执行:vi /usr/local/nginx/conf/nginx.conf,我们找到下面这段:


###################pureftpd AND phpmyadmin############################
......location ~ .*\.(php|php5)?$ {#fastcgi_pass remote_php_ip:9000;fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;}
......

9、将它修改为下面这样:


###################pureftpd AND phpmyadmin############################
......location ~ .*\.(php|php5)?$ {fastcgi_pass 127.0.0.1:9000;#fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;}
......

10、接下来我们重启Nginx看看效果如何: service nginx restart

11、如果出现当配置好后,打开探针出现502。请再安装一次hhvm并开启Fastcgi。

12、下面我们安装mysql数据库,很简单只要一条命令: apt-get install mysql-server,中间只要输入一次密码就可以了。

13、以下是测试探针地址,大家可以看看:http://174.140.168.169/tz.php

四、HHVM性能简单测试

1、测试HHVM能够承受的压力,可以采用网站服务器压力Web性能测试:Apache Bench,Webbench,http_load安装使用的方法,有兴趣的朋友可以多个方面进行测试。

2、这里只是简单地使用Webbench进行压力测试,先测试一下普通的LNMP所能够承受的压力,在10秒中内发送100个请求,VPS主机的负载压力达到了27。

3、同时网站访问直接挂掉。

4、在同样配置上的VPS上测试HHVM性能,在10秒中内发送100个请求。

5、VPS主机的负载压力在5以下。

6、继续向HHVM增加压力:20秒内发送100个请求。

7、VPS主机的负载压力在10左右。且网站可以正常访问。

五、HHVM安装与使用小结

1、HHVM安装过程并不复杂,难点在于如何将HHVM与Fastcgi、Nginx等融合,HHVM运行成功后,可以清楚地在探针中看到HHVM运行信息。

2、再来看看HHVM在探针上的整数运算能力检测、浮点运算能力检测、数据I/O能力检测项目的测试,都是在0.00x级别。

文章出自:Deamwork   由部落编辑整理,版权归原作者所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

HHVM安装使用教程相关推荐

  1. centos7 mysql workbench_centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...

  2. geany怎么创建文件夹_教程详情|Geany怎么使用,Geany安装使用教程_234游戏网

    Geany是利用GTK 2工具包开发的一个快速.轻巧的集成开发环境,具有良好的可移植性和通用性.安全性,广泛应用于各个行业.Geany具有语法高亮.代码折叠.代码自动完成等功能,非常适合开发人员使用. ...

  3. python3里的pillow怎么安装_“python安装pillow教程“python3.4怎么安装pil

    "python安装pillow教程"python3.4怎么安装pil python安装pillow教程2020-10-09 03:37:02人已围观 如何在python3.6中装p ...

  4. Mac环境下Docker及Splash的安装运行教程

    一.前言 由于最近使用Python爬虫框架scrapy练习爬虫,在爬取动态网页的时候,需要用到splash,进行对动态网页进行JavaScript渲染,但是使用splash又必须安装Docker.因为 ...

  5. kafka不使用自带zk_kafka 安装部署教程

    kafka 安装部署教程 1. 下载 官网链接 http://kafka.apache.org/downloads 浙大源 http://mirrors.tuna.tsinghua.edu.cn/ap ...

  6. Matlab2013a安装简单教程以及遇到的问题解决(反复提示激活问题)

    虽然说现在matlabr2018都出来了,但是有的时候还是需要这些老版本的matlab,最囧的时刻时不熟悉新版本而产生的障碍而导致使用2013版本的matlab. 今天在安装matlab时候,遇到了一 ...

  7. kangle web server源代码安装简明教程

    kangle web server源代码安装简明教程 - kangle使用交流 - kangle软件 是一款高性能web服务器,反向代理服务器,提供虚拟主机管理系统及代理服务器,web服务器架设 - ...

  8. Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程!

    Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程! 提取码均为0916 jdk-8u301-linux-x ...

  9. ENVI5.1安装破解教程

    原文地址: ENVI5.1安装破解_百度经验 http://jingyan.baidu.com/article/020278118b5ded1bcd9ce57a.html ENVI5.1_x86_x6 ...

最新文章

  1. Solaris 上网配置
  2. CF650E-Clockwork Bomb【并查集】
  3. java线程池返回线程状态_Java线程的不同状态
  4. 求一个整数数组的最大元素,递归方法实现
  5. 我的英语六级考试成绩
  6. 迷宫的最短路径(bfs)
  7. 书单 | 读了这10本书,再也不怕黑客攻击了
  8. Vue-动态绑定属性
  9. 微信小程序防抖功能的实现
  10. Unity3D插件 Doozy UI 学习(三):UI Element
  11. 网络编程之什么是计算机网络
  12. MATLAB学习笔记(一)常值函数与跳变函数的绘制
  13. 微信小程序canva生成图片,长按图片识别小程序二维码详解
  14. --scrapy爬虫--
  15. 有交互作用的正交设计
  16. 百度地图常用jsapi
  17. git switch 与 git checkout的不同
  18. 冬日舞会服务器维护中,绝版皮肤被天美终结,冬日舞会太优雅?宫本很可惜,这款没见过!...
  19. App打造自定义的统计SDK
  20. Linux触摸屏动效

热门文章

  1. ubuntu美化--修改图标
  2. XtraBackup 使用总结
  3. [01背包] 背包问题求具体方案(01背包+求方案数+思维)
  4. Plupload上传插件中文帮助文档
  5. 手机怎么给照片添加文字说明?多图片备注用备忘录更简单
  6. OPPO手机和华为手机哪个好一点?看性能参数便知
  7. 发布项目www.xxx.xx
  8. 红米Note11、红米Note11 Pro和红米Note11 Pro+的区别
  9. GoogLeNet网络详解与模型搭建
  10. 达人评测电视a53和a73区别