让PHP飞--HHVM虚拟机初探(一)

简介:

又到清明时,雨纷纷,人觞觞.有空闲的时间来学习记录点其他的东西.


简介:

大家都知道FaceBook一直是开源界旗帜之一,FaceBook主页业务

也是由PHP来开发完成,FaceBook的访问量,业务能力在业界可谓

拔得头筹,当然单纯的PHP基于半解释半编译的性能可能不对其胃口.

因此FaceBook自助研发了更高性能的PHP虚拟机,旨在将PHP代码

在运行时转换为更高效率的C++代码(AOT 静态链接编译),至于程

序逻辑并不是我们关注的,我们要关注如何配置在不同环境发挥它

的最大性能.  :)


有兴趣的朋友 请 , 项目始于2010年,项目性能毋庸置疑.

最新版本是 2.4 stable , 3.1 还在develop.  github-hhvm


尝试:

hhvm的安装目前分为两种方式:

源码编译:

   过程比较繁琐复杂,由于初试HHVM,不需要过多定制,暂不采用.

RPM安装:

   这一次先用RPM方式尝鲜即可.官方已放出了RPM的安装方式

1
2
3
4
5
6
7
8
9
10
11
# 将源配置文件下载到  /etc/yum.repos.d/ 下
wget http: //www .hop5. in /yum/el6/hop5 .repo
# 移除 gnote 可能会后面软件起冲突
rpm -e gnote
# 确保机器上有httpd2.2+的版本
yum -y  install  httpd
# 挂载 centos 发行光盘第二张,安装如下包
rpm -ivh libc-client-2007e-11.el6.x86_64.rpm
rpm -ivh oniguruma-5.9.1-3.1.el6.x86_64.rpm
# 剩下应该就能一路向下了
yum -y  install  hhvm

   安装完毕后我们可 rpm -ql hhvm 查询安装情况

1
2
3
4
# 这几个是我们要关注的东东
/usr/lib64/hiphop-php/hphp
/etc/profile .d /hphp .sh
/usr/bin/hhvm


运行:

   hhvm 运行有模式概念,  run (默认参数) | debug 交互调试 | server 前台模式 | daemon 服务 | replay | translate (t)

   我们只关注 deamon , 将HHVM变为后台服务 , 来等待用户响应 . 此概念与PHP-FPM如出一辙

   当然在你初次接触之时还推荐你 server 模式,此模式不需要任何配置文件即可启动,这对于首次

   运行它相当重要.

   server模式:

1
2
# server 模式启动
hhvm -m server index.php

wKiom1M-wEWyVhv8AAU9Y_CG0NA367.jpg

   第一次接触相当顺利,好感++有木有  : )

   deamon模式:

   hhvm的配置需要自己手写完成,daemon服务的启动也需要依赖它来完成  请 hhvm options

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 在这里我们完成了一个最简单最基本的配置文件  vim /etc/hhvm.conf
# 我们把没必要都不弄上来
# pid 文件
PidFile =  /var/run/hhvm .pid
# 运行日志文件
Log {
     Level = None  #(default) | Error | Warning | Info | Verbose
     NoSilencer =  false
     AlwaysLogUnhandledExceptions =  true
     RuntimeErrorReportingLevel = 8191
     Header =  false
     InjectedStackTrace =  true
     NativeStackTrace =  true
     MaxMessagesPerRequest = -1
     # 运行日志
     UseLogFile =  true
     File =  /var/run/hhvm .log
     # 访问日志
     Access {
       * {
         File =  /var/run/hhvmaccess .log
         Format =  %h %l %u %t  "%r"  %>s %b
       }
     }
     # 管理员管理日志
     AdminLog {
       File =  /var/run/hhvm .admin.log
       Format = %h %t %s %U
     }
     ApplicationLog =  true
}
# 服务器选项
Server {
     # 主机名
     Host = www.king.com
     IP = 172.16.251.41
     Port = 80
     # 线程总数 并发数量 (重要)
     ThreadCount = 50
     # 欲解释的php项目目录 ( 重要 )
     SourceRoot =  /var/www/php/
     # 请求超时不限   请求内存不限
     RequestTimeoutSeconds = -1
     RequestMemoryMaxBytes = -1
     # 启动服务选项   默认页   错误页  错误内容
     DefaultDocument = index.php
     ErrorDocument404 = 404.php
     FatalErrorMessage = sorry , error
     # http设置   压缩   长连接   http协议栈大小  响应队列长度
     GzipCompressionLevel = 3
     EnableKeepAlive =  true
     EnableEarlyFlush =  true
     MaxPostSize = 8   # in MB
     ResponseQueueCount = 0
     # 连接潮湿
     ConnectionTimeoutSeconds = 60
}
# 管理地址
AdminServer {
     Port = 8088
     ThreadCount = 1
     Password =
}

   # 测试页面

wKiom1M-xl_Bm9mzAAWWXL-jqmc338.jpg

   管理页面:

   在此可以执行多种hhvm的管理命令(对应url即可)

wKiom1M-xlajYJ87AAdsi-XgcfM989.jpg


wKioL1M-xjGDE7_4AAMMelRxYIo669.jpg


测试:

   初探阶段我们使用最为简单的ab测试完成,后面可以进行更加精确的测试项目来完成

   图: 默认情况未优化任何参数的情况如下

1
2
3
# 机器情况 cpu 1.3ghz , memory 1G 虚拟机环境
# 测试页面为 phpMyadmin 4
ab -c 100 -n 10000 http: //172 .16.251.41/

wKiom1M-xkHDz6KNAAOoVd_3eAo701.jpg

   纯脚本执行环境压力值一致情况 ( 该php页面非常简单只书写了一个 phpinfo() 探针函数 )

wKioL1M-ys6QKp8zAARgf4qjWqI289.jpg


思考:

   纯php或者内容量少的情况下,响应无比快,那大家或许猜到了瓶颈,看图wKioL1M-xiuQ_Dp8AAL1QZ486vA363.jpg


wKiom1M-xkzQNNSlAAYwgpV1AqM940.jpg

   上图清晰明确指出了性能所在,这便是下节我们要解决的一些问题

   注意这里都是无缓存的,并且每一次的请求都要重新生成

   静态文件缓存,php代码缓存等等





     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1390834,如需转载请自行联系原作者






相关文章
|
编译器 PHP C语言
PHP虚拟机是什么?底层原理是什么?
PHP虚拟机是什么?底层原理是什么?
258 0
HHVM是如何提升PHP性能的?底层原理是什么?
HHVM是如何提升PHP性能的?底层原理是什么?
199 0
|
Linux PHP 虚拟化
Linux虚拟机和Window本地共享文件夹用于PHP项目调试
Linux虚拟机和Window本地共享文件夹用于PHP项目调试
187 0
Linux虚拟机和Window本地共享文件夹用于PHP项目调试
|
Web App开发 缓存 Java
Hack on HHVM —— Facebook是如何优化PHP的
Facebook周四正式发布了Hack编程语言,将静态类型以及一些现代的语言特性引入了PHP。这是Facebook对PHP优化之路上的新里程碑
535 0
Hack on HHVM —— Facebook是如何优化PHP的
|
PHP 计算机视觉 Python
|
前端开发 JavaScript Java