您好,登錄后才能下訂單哦!
又到清明時,雨紛紛,人觴觴.有空閑的時間來學習記錄點其他的東西.
簡介:
大家都知道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
第一次接觸相當順利,好感++有木有 : )
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 = }
# 測試頁面
管理頁面:
在此可以執行多種hhvm的管理命令(對應url即可)
測試:
初探階段我們使用最為簡單的ab測試完成,后面可以進行更加精確的測試項目來完成
圖: 默認情況未優化任何參數的情況如下
# 機器情況 cpu 1.3ghz , memory 1G 虛擬機環境 # 測試頁面為 phpMyadmin 4 ab -c 100 -n 10000 http://172.16.251.41/
純腳本執行環境壓力值一致情況 ( 該php頁面非常簡單只書寫了一個 phpinfo() 探針函數 )
思考:
純php或者內容量少的情況下,響應無比快,那大家或許猜到了瓶頸,看圖
上圖清晰明確指出了性能所在,這便是下節我們要解決的一些問題
注意這里都是無緩存的,并且每一次的請求都要重新生成
靜態文件緩存,php代碼緩存等等
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。