日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

体验XHProf(linux版本)

發(fā)布時(shí)間:2024/9/20 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 体验XHProf(linux版本) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

調(diào)試PHP時(shí),XDebug一直是大眾的不二選擇,搭配上Webgrind,可以獲得不錯(cuò)的效果。今天看某人的棲息地里的介紹,才發(fā)現(xiàn)了XHProf,于是體驗(yàn)了一下,感覺(jué)很酷,與XDebug相比,運(yùn)行更輕便(本身還包括一個(gè)web查看工具),表現(xiàn)更易懂,下面記錄一下體驗(yàn)過(guò)程。?

1.安裝XHProf?

Command代碼
  • wget?http://pecl.php.net/get/xhprof-0.9.2.tgz??
  • tar?zxf?xhprof-0.9.2.tgz??
  • cd?xhprof-0.9.2??
  • cp?-r?xhprof_html?xhprof_lib?<directory_for_htdocs>??
  • cd?extension??
  • phpize??
  • ./configure??
  • make??
  • make?install??


  • 2 . 配置php.ini ?
    Php.ini代碼
  • [xhprof]??
  • extension=xhprof.so??
  • ;??
  • ;?directory?used?by?default?implementation?of?the?iXHProfRuns??
  • ;?interface?(namely,?the?XHProfRuns_Default?class)?for?storing??
  • ;?XHProf?runs.??
  • ;??
  • xhprof.output_dir=<directory_for_storing_xhprof_runs>??

  • 重啟服務(wù)讓修改生效,現(xiàn)在就可以使用XHProf了,不過(guò)為了顯示效果更炫,最好繼續(xù)安裝Graphviz。?

    3. 安裝Graphviz ?
    Command代碼
  • wget?http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz??
  • tar?zxf?graphviz-2.24.0.tar.gz??
  • cd?graphviz-2.24.0??
  • ./configure??
  • make??
  • make?install??

  • 安裝Graphviz的目的是為了xhprof圖形化web工具查看profiling log文件。安裝后使用web工具查看log圖形時(shí),最常見(jiàn)錯(cuò)誤是:?
    提示如下:?
    引用 Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.

    且編譯graphviz提示信息png: No (missing png.h),也就是dot 不支持PNG,所以需要安裝libpng包,如:?
    Linux代碼
  • wget?http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz??
  • tar?zxf?libpng-1.5.1.tar.gz??
  • cd?libpng-1.5.1??
  • ./configure??
  • make??
  • make?install??

  • 然后重新編譯安裝graphviz,加上參數(shù)--with-png=yes。完成后,應(yīng)確保命令dot在PATH環(huán)境變量里(默認(rèn)應(yīng)該就在路徑里,一般不需要特別設(shè)置),以便XHProf能找到它。?

    使用XHProf ?
    在你要監(jiān)測(cè)的Php代碼頭尾部分別加入代碼xhprof_enable()和xhprof_disable()?
    Php代碼
  • //?start?profiling??
  • xhprof_enable();??
  • //?xhprof_enable(XHPROF_FLAGS_CPU?+?XHPROF_FLAGS_MEMORY);?//?允許CPU和內(nèi)存輸出??
  • //?run?program??
  • ....??
  • //?stop?profiler??
  • $xhprof_data?=?xhprof_disable();??
  • //??
  • //?Saving?the?XHProf?run??
  • //?using?the?default?implementation?of?iXHProfRuns.??
  • //??
  • $XHPROF_ROOT?=?"/projects/xhprof";//這里填寫(xiě)的就是你的xhprof的路徑??
  • include_once?$XHPROF_ROOT?.?"/xhprof_lib/utils/xhprof_lib.php";??
  • include_once?$XHPROF_ROOT?.?"/xhprof_lib/utils/xhprof_runs.php";??
  • ??
  • $xhprof_runs?=?new?XHProfRuns_Default();??
  • ??
  • //?Save?the?run?under?a?namespace?"xhprof_foo".??
  • //??
  • //?**NOTE**:??
  • //?By?default?save_run()?will?automatically?generate?a?unique??
  • //?run?id?for?you.?[You?can?override?that?behavior?by?passing??
  • //?a?run?id?(optional?arg)?to?the?save_run()?method?instead.]??
  • //??
  • $run_id?=?$xhprof_runs->save_run($xhprof_data,?"xhprof_foo");??
  • ??
  • echo?"---------------\n".??
  • "Assuming?you?have?set?up?the?http?based?UI?for?\n".??
  • "XHProf?at?some?address,?you?can?view?run?at?\n".??
  • "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".??
  • "---------------\n";??

  • 如此一來(lái),會(huì)在上面設(shè)定的xhprof.output_dir目錄里生成名字類(lèi)似49bafaa3a3f66.xhprof_foo的數(shù)據(jù)文件,可以很方便的通過(guò)Web方式瀏覽效果:?

    http://<xhprof-ui-address>/index.php?run=49bafaa3a3f66&source=xhprof_foo?

    目前顯示的是表格形式的顯示,點(diǎn)擊頁(yè)面上的[View Full Callgraph],就能看到精美的圖片顯示了。看看下面的screenshot.?




    結(jié)果分析?
    引用
    主要指標(biāo):
    Inclusive Time (或子樹(shù)時(shí)間):包括子函數(shù)所有執(zhí)行時(shí)間。
    Exclusive Time/Self Time:函數(shù)執(zhí)行本身花費(fèi)的時(shí)間,不包括子樹(shù)執(zhí)行時(shí)間。
    Wall時(shí)間:花去了的時(shí)間或掛鐘時(shí)間。
    CPU時(shí)間:用戶耗的時(shí)間+內(nèi)核耗的時(shí)間

    # 如果xhprof_enable函數(shù)寫(xiě)作:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)可以輸出更多指標(biāo)。
    Function Name 函數(shù)名
    Calls 調(diào)用次數(shù)
    Calls% 調(diào)用百分比

    # 消耗時(shí)間
    Incl. Wall Time (microsec) 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間 以微秒算(一百萬(wàn)分之一秒)
    IWall% 調(diào)用的包括子函數(shù)所有花費(fèi)時(shí)間的百分比
    Excl. Wall Time (microsec) 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間,不包括子樹(shù)執(zhí)行時(shí)間,以微秒算(一百萬(wàn)分之一秒)
    EWall% 函數(shù)執(zhí)行本身花費(fèi)的時(shí)間的百分比,不包括子樹(shù)執(zhí)行時(shí)間

    # 消耗CPU
    Incl. CPU(microsecs) 調(diào)用的包括子函數(shù)所有花費(fèi)的cpu時(shí)間。減Incl. Wall Time即為等待cpu的時(shí)間
    ICpu% Incl. CPU(microsecs)的百分比
    Excl. CPU(microsec) 函數(shù)執(zhí)行本身花費(fèi)的cpu時(shí)間,不包括子樹(shù)執(zhí)行時(shí)間,以微秒算(一百萬(wàn)分之一秒)。
    ECPU% Excl. CPU(microsec)的百分比

    # 消耗內(nèi)存
    Incl.MemUse(bytes) 包括子函數(shù)執(zhí)行使用的內(nèi)存。
    IMemUse% Incl.MemUse(bytes)的百分比
    Excl.MemUse(bytes) 函數(shù)執(zhí)行本身內(nèi)存,以字節(jié)算
    EMemUse% Excl.MemUse(bytes)的百分比

    # 消耗內(nèi)存峰值
    Incl.PeakMemUse(bytes) Incl.MemUse的峰值
    IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
    Excl.PeakMemUse(bytes) Excl.MemUse的峰值
    EPeakMemUse% EMemUse% 峰值百分比

    來(lái)源:http://koda.iteye.com/blog/463891

    總結(jié)

    以上是生活随笔為你收集整理的体验XHProf(linux版本)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。