溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

讓PHP飛--HHVM虛擬機(jī)初探(一)

發(fā)布時(shí)間:2020-05-26 03:56:00 來源:網(wǎng)絡(luò) 閱讀:1056 作者:My_King1 欄目:web開發(fā)

又到清明時(shí),雨紛紛,人觴觴.有空閑的時(shí)間來學(xué)習(xí)記錄點(diǎn)其他的東西.


簡介:

大家都知道FaceBook一直是開源界旗幟之一,FaceBook主頁業(yè)務(wù)

也是由PHP來開發(fā)完成,FaceBook的訪問量,業(yè)務(wù)能力在業(yè)界可謂

拔得頭籌,當(dāng)然單純的PHP基于半解釋半編譯的性能可能不對(duì)其胃口.

因此FaceBook自助研發(fā)了更高性能的PHP虛擬機(jī),旨在將PHP代碼

在運(yùn)行時(shí)轉(zhuǎn)換為更高效率的C++代碼(AOT 靜態(tài)鏈接編譯),至于程

序邏輯并不是我們關(guān)注的,我們要關(guān)注如何配置在不同環(huán)境發(fā)揮它

的最大性能.  :)


有興趣的朋友 請(qǐng) hhvm.com, 項(xiàng)目始于2010年,項(xiàng)目性能毋庸置疑.

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


嘗試:

hhvm的安裝目前分為兩種方式:

源碼編譯:

   過程比較繁瑣復(fù)雜,由于初試HHVM,不需要過多定制,暫不采用.

RPM安裝:

   這一次先用RPM方式嘗鮮即可.官方已放出了RPM的安裝方式

# 將源配置文件下載到  /etc/yum.repos.d/ 下
wget http://www.hop5.in/yum/el6/hop5.repo
# 移除 gnote 可能會(huì)后面軟件起沖突
rpm -e gnote
# 確保機(jī)器上有httpd2.2+的版本
yum -y install httpd
# 掛載 centos 發(fā)行光盤第二張,安裝如下包
rpm -ivh libc-client-2007e-11.el6.x86_64.rpm
rpm -ivh oniguruma-5.9.1-3.1.el6.x86_64.rpm
# 剩下應(yīng)該就能一路向下了
yum -y install hhvm

   安裝完畢后我們可 rpm -ql hhvm 查詢安裝情況

# 這幾個(gè)是我們要關(guān)注的東東
/usr/lib64/hiphop-php/hphp
/etc/profile.d/hphp.sh
/usr/bin/hhvm


運(yùn)行:

   hhvm 運(yùn)行有模式概念,  run (默認(rèn)參數(shù)) | debug 交互調(diào)試 | server 前臺(tái)模式 | daemon 服務(wù) | replay | translate (t)

   我們只關(guān)注 deamon , 將HHVM變?yōu)楹笈_(tái)服務(wù) , 來等待用戶響應(yīng) . 此概念與PHP-FPM如出一轍

   當(dāng)然在你初次接觸之時(shí)還推薦你 server 模式,此模式不需要任何配置文件即可啟動(dòng),這對(duì)于首次

   運(yùn)行它相當(dāng)重要.

   server模式:

# server 模式啟動(dòng)
hhvm -m server index.php

讓PHP飛--HHVM虛擬機(jī)初探(一)

   第一次接觸相當(dāng)順利,好感++有木有  : )

   deamon模式:

   hhvm的配置需要自己手寫完成,daemon服務(wù)的啟動(dòng)也需要依賴它來完成  請(qǐng) hhvm options

# 在這里我們完成了一個(gè)最簡單最基本的配置文件  vim /etc/hhvm.conf
# 我們把沒必要都不弄上來
# pid 文件
PidFile = /var/run/hhvm.pid
# 運(yùn)行日志文件
Log {
    Level = None #(default) | Error | Warning | Info | Verbose
    NoSilencer = false
    AlwaysLogUnhandledExceptions = true
    RuntimeErrorReportingLevel = 8191
    Header = false
    InjectedStackTrace = true
    NativeStackTrace = true
    MaxMessagesPerRequest = -1
    # 運(yùn)行日志
    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
}
# 服務(wù)器選項(xiàng)
Server {
    # 主機(jī)名
    Host = www.king.com
    IP = 172.16.251.41
    Port = 80
    # 線程總數(shù) 并發(fā)數(shù)量 (重要)
    ThreadCount = 50
    # 欲解釋的php項(xiàng)目目錄 ( 重要 )
    SourceRoot = /var/www/php/
    # 請(qǐng)求超時(shí)不限   請(qǐng)求內(nèi)存不限
    RequestTimeoutSeconds = -1
    RequestMemoryMaxBytes = -1
    # 啟動(dòng)服務(wù)選項(xiàng)   默認(rèn)頁   錯(cuò)誤頁  錯(cuò)誤內(nèi)容
    DefaultDocument = index.php
    ErrorDocument404 = 404.php
    FatalErrorMessage = sorry , error
    # http設(shè)置   壓縮   長連接   http協(xié)議棧大小  響應(yīng)隊(duì)列長度
    GzipCompressionLevel = 3
    EnableKeepAlive = true
    EnableEarlyFlush = true
    MaxPostSize = 8  # in MB
    ResponseQueueCount = 0
    # 連接潮濕
    ConnectionTimeoutSeconds = 60
}
# 管理地址
AdminServer {
    Port = 8088
    ThreadCount = 1
    Password =
}

   # 測(cè)試頁面

讓PHP飛--HHVM虛擬機(jī)初探(一)

   管理頁面:

   在此可以執(zhí)行多種hhvm的管理命令(對(duì)應(yīng)url即可)

讓PHP飛--HHVM虛擬機(jī)初探(一)


讓PHP飛--HHVM虛擬機(jī)初探(一)


測(cè)試:

   初探階段我們使用最為簡單的ab測(cè)試完成,后面可以進(jìn)行更加精確的測(cè)試項(xiàng)目來完成

   圖: 默認(rèn)情況未優(yōu)化任何參數(shù)的情況如下

# 機(jī)器情況 cpu 1.3ghz , memory 1G 虛擬機(jī)環(huán)境
# 測(cè)試頁面為 phpMyadmin 4
ab -c 100 -n 10000 http://172.16.251.41/

讓PHP飛--HHVM虛擬機(jī)初探(一)

   純腳本執(zhí)行環(huán)境壓力值一致情況 ( 該php頁面非常簡單只書寫了一個(gè) phpinfo() 探針函數(shù) )

讓PHP飛--HHVM虛擬機(jī)初探(一)


思考:

   純php或者內(nèi)容量少的情況下,響應(yīng)無比快,那大家或許猜到了瓶頸,看圖讓PHP飛--HHVM虛擬機(jī)初探(一)


讓PHP飛--HHVM虛擬機(jī)初探(一)

   上圖清晰明確指出了性能所在,這便是下節(jié)我們要解決的一些問題

   注意這里都是無緩存的,并且每一次的請(qǐng)求都要重新生成

   靜態(tài)文件緩存,php代碼緩存等等









向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI