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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

体验XHProf(linux版本)

發布時間:2024/9/20 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 体验XHProf(linux版本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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>??

  • 重啟服務讓修改生效,現在就可以使用XHProf了,不過為了顯示效果更炫,最好繼續安裝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圖形時,最常見錯誤是:?
    提示如下:?
    引用 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,加上參數--with-png=yes。完成后,應確保命令dot在PATH環境變量里(默認應該就在路徑里,一般不需要特別設置),以便XHProf能找到它。?

    使用XHProf ?
    在你要監測的Php代碼頭尾部分別加入代碼xhprof_enable()和xhprof_disable()?
    Php代碼
  • //?start?profiling??
  • xhprof_enable();??
  • //?xhprof_enable(XHPROF_FLAGS_CPU?+?XHPROF_FLAGS_MEMORY);?//?允許CPU和內存輸出??
  • //?run?program??
  • ....??
  • //?stop?profiler??
  • $xhprof_data?=?xhprof_disable();??
  • //??
  • //?Saving?the?XHProf?run??
  • //?using?the?default?implementation?of?iXHProfRuns.??
  • //??
  • $XHPROF_ROOT?=?"/projects/xhprof";//這里填寫的就是你的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";??

  • 如此一來,會在上面設定的xhprof.output_dir目錄里生成名字類似49bafaa3a3f66.xhprof_foo的數據文件,可以很方便的通過Web方式瀏覽效果:?

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

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




    結果分析?
    引用
    主要指標:
    Inclusive Time (或子樹時間):包括子函數所有執行時間。
    Exclusive Time/Self Time:函數執行本身花費的時間,不包括子樹執行時間。
    Wall時間:花去了的時間或掛鐘時間。
    CPU時間:用戶耗的時間+內核耗的時間

    # 如果xhprof_enable函數寫作:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)可以輸出更多指標。
    Function Name 函數名
    Calls 調用次數
    Calls% 調用百分比

    # 消耗時間
    Incl. Wall Time (microsec) 調用的包括子函數所有花費時間 以微秒算(一百萬分之一秒)
    IWall% 調用的包括子函數所有花費時間的百分比
    Excl. Wall Time (microsec) 函數執行本身花費的時間,不包括子樹執行時間,以微秒算(一百萬分之一秒)
    EWall% 函數執行本身花費的時間的百分比,不包括子樹執行時間

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

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

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

    來源:http://koda.iteye.com/blog/463891

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。