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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php轻量级的性能分析工具xhprof的安装使用

發布時間:2024/9/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php轻量级的性能分析工具xhprof的安装使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前一直使用基于Xdebug進行PHP的性能分析,對于本地開發環境來說是夠用了,但如果是線上環境的話,xdebug消耗較大,配置也不夠靈活,因此線上環境建議使用xhprof進行PHP性能追蹤及分析。


一、前言

  有用的東西還是記錄下來吧,也方便以后的查詢;這次記錄一下xhprof的安裝使用;

  xhprof是facebook開源出來的一個php輕量級的性能分析工具,跟Xdebug類似,但性能開銷更低,

  還可以用在生產環境中,也可以由程序開 關來控制是否進行profile。

二、安裝

?
1 2 3 4 5 6 7 8 9 wget http://pecl.php.net/get/xhprof-0.9.3.tgz ?tar zxf xhprof-0.9.3.tgz ?cd xhprof-0.9.3/extension ?/usr/bin/phpize (php版本安裝后生成的phpize文件,可根據phpinfo查看,所以php版本不同,生成的phpize也不同,此步驟主要生成configure文件) ?./configure –with-php-config=/usr/bin/php-config (php-config的路徑,也是php安裝后生成的文件) ?make ?sudo make install

?(會自動將生成的擴展文件拷貝到擴展目錄中/usr/lib64/php/modules)

??? 當然具體的php文件的目錄,每個人不盡相同,可根據phpinfo查詢

三、php.ini配置

根據phpinfo找到 extension_dir的目錄
(/etc/php.d/xhprof.ini)

添加一下內容:

?
1 2 extension=xhprof.so xhprof.output_dir=/tmp/xhprof //xhprof的分析日志

四、重啟服務

?
1 sudo /etc/init.d/http restart

?查看phpinfo是否安裝成功

五、使用方法

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 開頭: xhprof_enable(); //開啟監測 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不記錄內置的函數 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同時分析CPU和Mem的開銷 //要測試的代碼 ... ... ... 結尾: $xhprof_data = xhprof_disable(); //停止監測,返回運行數據 $xhprof_root = '/(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();? $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof"); echo '<a href="http://(xhprof的虛擬主機域名)/xhprof_html/index.php?run='.$run_id.'&source=xhprof" target="_blank">xhprof統計</a>';

  上邊的代碼使用了,給xhprof設置虛擬主機的方法。

  把源碼包中的 xhprof_html 和 xhprof_lib 文件夾拷貝到自己建立的虛擬目錄中

  cp -r xhprof_html xhprof_lib /xxx/xhprof/? (此處目的是建立數據分析目錄,可將此目錄配置成虛擬主機訪問)

  運行后,統計點擊返回的 xhprof統計 鏈接,即可。

六、注意問題以及名詞解釋

  在顯示的統計頁面中,點[View Full Callgraph]圖形化顯示(最大的性能問題會用紅色標出,其次是黃色);

  點擊后,可能提示錯誤消息,執行以下命令即可

?
1 2 yum install -y graphviz yum install graphviz-gd

  名詞解釋

?

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Function Name 函數名 ?Calls 調用次數 ?Calls% 調用百分比 ?Incl. Wall Time (microsec) 調用的包括子函數所有花費時間 以微秒算(一百萬分之一秒) ?IWall% 調用的包括子函數所有花費時間的百分比 ?Excl. Wall Time (microsec) 函數執行本身花費的時間,不包括子樹執行時間,以微秒算(一百萬分之一秒) ?EWall% 函數執行本身花費的時間的百分比,不包括子樹執行時間 ?Incl. CPU(microsecs) 調用的包括子函數所有花費的cpu時間。減Incl. Wall Time即為等待cpu的時間 ?減Excl. 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% 峰值百分比

xhprof的安裝與簡易用法

xhprof是Facebook開源的輕量級PHP性能分析工具,Linux環境下可以通過pecl直接安裝,比如在Ubuntu下僅需3行指令

?
1 2 3 pecl install xhprof-beta echo "extension=xhprof.so" > /etc/php5/fpm/conf.d/xhprof.ini service php5-fpm restart

之后可以通過phpinfo()檢查擴展是否已經加載。

具體如何使用呢,xhprof項目中已經提供了示例以及簡易的UI,下載xhprof項目到web服務器,假設可以通過http://localhost/xhprof/訪問,那么訪問http://localhost/xhprof/examples/sample.php可以看到一些輸出,并且提示通過訪問http://<xhprof-ui-address>/index.php?run=XXX&source=xhprof_foo查看結果。接下來訪問http://localhost/xhprof/xhprof_html/就可以看到已經保存的結果,列出了所有函數的調用以及所消耗的時間。

分析一下示例代碼sample.php,關鍵部分只有2行:

?
1 2 3 4 5 6 //開啟xhprof并開始記錄 xhprof_enable(); //運行一些函數 foo(); //停止記錄并取到結果 $xhprof_data = xhprof_disable();

$xhprof_data中記錄了程序單步運行過程中所有的函數調用時間及CPU內存消耗等,具體記錄哪些指標可以通過xhprof_enable的入口參數控制,之后的處理已經與xhprof擴展無關,大致是編寫了一個存儲類XHProfRuns_Default,將$xhprof_data序列化并保存到某個目錄,可以通過XHProfRuns_Default(__DIR__)將結果輸出到當前目錄,如果不指定則會讀取php.ini配置文件中的xhprof.output_dir,仍然沒有指定則會輸出到/tmp。

xhprof_html/index.php將記錄的結果整理并可視化,默認的UI里列出了:
?funciton name : 函數名
?calls: 調用次數
?Incl. Wall Time (microsec): 函數運行時間(包括子函數)
?IWall%:函數運行時間(包括子函數)占比
?Excl. Wall Time(microsec):函數運行時間(不包括子函數)
?EWall%:函數運行時間(不包括子函數)

每一項應該不難理解,以項目自帶的sample.php為例,示例中編寫了一個main()函數,main()函數中調用foo()、bar()等一些子函數進行了一點字符處理。整個程序運行過程中,main()函數只運行了一次,并且由于main()函數中包括了所有的邏輯,所以main()函數的IWall%占比為100%,但是由于main()函數的功能都是由子函數實現的,因此main()函數的EWall%只有0.3%,而foo()函數完成了主要的工作,EWall%有98.1%。因此在分析更大型的程序時,往往需要根據這幾項指標分別排序,從不同的角度審視性能消耗。

在xhprof_html/index.php中還可以看到[View Full Callgraph]鏈接,點擊后可以繪制出一張可視化的性能分析圖,如果點擊后報錯的話,可能是缺少依賴graphviz,ubuntu可以通過apt安裝
apt-get install graphviz

更好的注入方式

了解了上面這些,其實就已經可以將xhprof整合到任何我們已有的項目中去了。目前大部分MVC框架都有唯一的入口文件,只需要在入口文件的開始處注入xhprof的邏輯

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 //開啟xhprof xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); //在程序結束后收集數據 register_shutdown_function(function() { ??$xhprof_data??? = xhprof_disable(); ??//讓數據收集程序在后臺運行 ??if (function_exists('fastcgi_finish_request')) { ????fastcgi_finish_request(); ??} ??//保存xhprof數據 ??... });

但是這樣免不了要修改項目的源代碼,其實php本身就提供了更好的注入方式,比如將上述邏輯保存為/opt/inject.php,然后修改php fpm配置文件

?
1 vi /etc/php5/fpm/php.ini

修改auto_prepend_file配置

?
1 auto_prepend_file = /opt/inject.php

這樣所有的php-fpm請求的php文件前都會自動注入/opt/inject.php文件

如果使用Nginx的話,還可以通過Nginx的配置文件設置,這樣侵入性更小,并且可以實現基于站點的注入。

?
1 fastcgi_param PHP_VALUE "auto_prepend_file=/opt/inject.php";

來源:http://www.jb51.net/article/70997.htm

總結

以上是生活随笔為你收集整理的php轻量级的性能分析工具xhprof的安装使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 熟妇高潮一区二区三区在线播放 | 色先锋资源网 | 亚洲日本中文字幕在线 | 久操成人| 色诱av手机版 | 宅男视频在线免费观看 | 亚洲视频网站在线观看 | 午夜99| 老司机av导航 | 欧美性生交片4 | 国产精品一区二区亚洲 | 狠狠操狠狠爱 | 欧美啪啪一区二区 | 丰满肉嫩西川结衣av | 久久y| 哪个网站可以看毛片 | 国产成人精品亚洲线观看 | 偷拍第1页 | 亚洲欧美日韩综合一区二区 | 天天干天天色天天射 | 美女被叉叉的影院 | 无码国产精品一区二区免费式直播 | 国产不卡一区二区视频 | 18一20岁毛毛片 | 精品福利一区二区 | 激情五月综合网 | 嫩草影院懂你的影院 | 亚洲成人一区在线 | 国产精品88av| 99精品无码一区二区 | www在线视频| 锦绣未央在线观看 | 污视频网站入口 | 欧美tv| 优优色综合| 久草综合在线观看 | 色呦呦在线看 | 国产对白videos麻豆高潮 | 精品国产无码在线观看 | 白浆av| 国产成人久久精品流白浆 | 日韩高清久久 | 少妇一级淫片免费放 | 操人网| 久久久wwww | 在线一区二区三区四区五区 | 苍井空亚洲精品aa片在线播放 | 久一视频在线观看 | 国产一区二区三区视频播放 | 看毛片看毛片 | 国产一级片视频 | 欧美一级全黄 | 九九在线免费视频 | 综合色99 | 黄色综合网| 欧美激情婷婷 | 黄色免费在线观看视频 | 久久精品免费电影 | 青青草激情视频 | 成人免费黄色网 | 天天草天天操 | 翔田千里一区二区 | 日本体内she精高潮 男女视频在线免费观看 | 日本欧美国产一区二区三区 | 午夜精品久久久久久 | 亚洲精品嫩草 | 免费福利视频网站 | 韩国日本欧美一区 | 五十路japanese55丰满 | 亚洲香蕉在线 | 九九九久久久精品 | 精品无码久久久久久久久 | 99精品人妻少妇一区二区 | 在线伊人网 | 午夜久久影院 | 91黄址 | 日韩作爱| 国产又粗又长视频 | 国产精品一区麻豆 | 99视频精品免费 | 射在线 | 欧美成人黄色小视频 | 国产精品久久777777 | 天堂av2021 | 国产情侣自拍小视频 | 欧美成人小视频 | 亚洲最新视频 | 国产高清一级片 | 日本免费福利视频 | 免费网站成人 | japanesexxxx日本妞 | 中文字幕日韩无 | 国产极品视频在线观看 | 欧美激情免费观看 | 国产精品一卡二卡在线观看 | 国产黄色片免费看 | 依人综合网 | 99伊人 | 亚洲免费视频观看 |