让PHP飞--HHVM虚拟机初探(一)-创新互联

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

员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联建站坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站建设、网站建设、微信公众号开发、电商网站开发,微信小程序定制开发,软件按需规划网站等一站式互联网企业服务。

简介:

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

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

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

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

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

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

的大性能.  :)

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

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

尝试:

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

源码编译:

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

RPM安装:

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

# 将源配置文件下载到 /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 查询安装情况

# 这几个是我们要关注的东东 /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模式:

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

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

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

  deamon模式:

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

# 在这里我们完成了一个最简单最基本的配置文件 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 = }

  # 测试页面

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

  管理页面:

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

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

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

测试:

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

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

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

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

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

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

思考:

  纯php或者内容量少的情况下,响应无比快,那大家或许猜到了瓶颈,看图让PHP飞--HHVM虚拟机初探(一)

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

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

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

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:让PHP飞--HHVM虚拟机初探(一)-创新互联
文章起源:http://pwwzsj.com/article/ipdso.html