国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用XHProf分析PHP性能瓶頸(一)

pkwenda / 976人閱讀

摘要:輸出的性能數(shù)據(jù)中添加數(shù)據(jù)。中間是要分析的代碼。是一個(gè)繪制圖形的工具,可以更為直觀的讓你查看性能的瓶頸。這樣所有使用該環(huán)境的都會(huì)生效。這樣僅該項(xiàng)目生效。

安裝xhprof擴(kuò)展
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
sudo phpize
./configure
sudo make
sudo make install
cd ../

配置php.ini

[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp
注:xhprof已經(jīng)很久沒有更新過了,截至目前還不支持php7,php7可以使用 https://github.com/phacility/...。
配置xhprof環(huán)境

需要把xhprof壓縮包里的兩個(gè)目錄復(fù)制到指定目錄(假設(shè)定義到 /work/xhprof/):

mkdir /work/xhprof/
cp -a xhprof_html/ /work/xhprof/
cp -a xhprof_lib/ /work/xhprof/

然后在項(xiàng)目框架的入口文件添加:

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();
    }
    include_once "/work/xhprof/xhprof_lib/utils/xhprof_lib.php";
    include_once "/work/xhprof/xhprof_lib/utils/xhprof_runs.php";
    $xhprof_runs = new XHProfRuns_Default();
    $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof");
});

代碼解析:
$xhprof_data中記錄了程序運(yùn)行過程中所有的函數(shù)調(diào)用時(shí)間及CPU內(nèi)存消耗,具體記錄哪些指標(biāo)可以通過xhprof_enable的參數(shù)控制,目前支持的參數(shù)有:

HPROF_FLAGS_NO_BUILTINS 跳過所有內(nèi)置(內(nèi)部)函數(shù)。

XHPROF_FLAGS_CPU 輸出的性能數(shù)據(jù)中添加 CPU 數(shù)據(jù)。

XHPROF_FLAGS_MEMORY 輸出的性能數(shù)據(jù)中添加內(nèi)存數(shù)據(jù)。

之后的處理已經(jīng)與xhprof擴(kuò)展無關(guān),大致是編寫一個(gè)存儲(chǔ)類XHProfRuns_Default,將$xhprof_data序列化并保存到某個(gè)目錄,可以通過XHProfRuns_Default(__DIR__)將結(jié)果輸出到當(dāng)前目錄,如果不指定則會(huì)讀取php.ini配置文件中的xhprof.output_dir,仍然沒有指定則會(huì)輸出到/tmp。

xhprof_enablexhprof_disable是成對(duì)出現(xiàn)的,一個(gè)是代碼運(yùn)行最前面,一個(gè)是最后面。中間是要分析的代碼。

經(jīng)過上面的配置后,我們后續(xù)請(qǐng)求項(xiàng)目的接口,xhprof就會(huì)分析請(qǐng)求過程中的CPU、內(nèi)存、耗時(shí)等內(nèi)容。日志保存在xhprof.output_dir目錄。

配置web

配置好了,怎么查看日志呢?我們可以搭建一個(gè)簡(jiǎn)單的web server:

xhprof.test.com.conf

server {
    listen       80;
    server_name  xhprof.test.com;

    root /work/xhprof/xhprof_html;
    index  index.html index.php;


    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

然后配置虛擬主機(jī)xhprof.test.com。重啟nginx,打開 xhprof.test.com就可以看到效果了:


默認(rèn)的UI里列出了:

funciton name : 函數(shù)名

calls: 調(diào)用次數(shù)

Incl. Wall Time (microsec): 函數(shù)運(yùn)行時(shí)間(包括子函數(shù))

IWall%:函數(shù)運(yùn)行時(shí)間(包括子函數(shù))占比

Excl. Wall Time(microsec):函數(shù)運(yùn)行時(shí)間(不包括子函數(shù))

EWall%:函數(shù)運(yùn)行時(shí)間(不包括子函數(shù))

在web中還可以看到 [View Full Callgraph] 鏈接,點(diǎn)擊后可以繪制出一張可視化的性能分析圖,如果點(diǎn)擊后報(bào)錯(cuò)的話,可能是缺少依賴graphviz。graphviz是一個(gè)繪制圖形的工具,可以更為直觀的讓你查看性能的瓶頸。如果需要可以安裝:

yum install -y libpng
yum install -y graphviz

效果:

非侵入式引入xhprof

前面我們是通過在項(xiàng)目入口文件添加代碼實(shí)現(xiàn)了分析的功能。更優(yōu)雅的方式是新建一個(gè)額外的文件 xhprof.inc.php,保存在/work/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();
    }
    include_once "/work/xhprof/xhprof_lib/utils/xhprof_lib.php";
    include_once "/work/xhprof/xhprof_lib/utils/xhprof_runs.php";
    $xhprof_runs = new XHProfRuns_Default();
    $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof");
});

利用PHP的自動(dòng)加載功能,在執(zhí)行代碼前注入此文件,編輯php.ini:

auto_prepend_file = /work/xhprof/xhprof.inc.php

然后重啟PHP服務(wù)。這樣所有使用該php環(huán)境的都會(huì)生效。

或者寫到指定項(xiàng)目的nginx配置里也行:
jifen.cc.conf

location ~ .php$ {
        
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param PHP_VALUE "auto_prepend_file=/work/xhprof/xhprof.inc.php";
        include        fastcgi_params;
    }

然后重啟nginx服務(wù)。這樣僅該項(xiàng)目生效。

通過 auto_prepend_file 和 auto_append_file包含的文件在此模式下會(huì)被解析,但有些限制,例如函數(shù)必須在被調(diào)用之前定義。
修改采樣頻率

默認(rèn)情況下,xhprof每次都會(huì)運(yùn)行,線上環(huán)境如果這么設(shè)置,會(huì)對(duì)性能有影響。

xhprof.inc.php

save_run($xhprof_data, "xhprof");    
    }
});
總結(jié)

本篇文章里,我們介紹了如何基于xhprof擴(kuò)展來分析PHP性能,并記錄到日志里,最后使用xhprof擴(kuò)展自帶的UI在web里展示出來。主要知識(shí)點(diǎn):

安裝xhprof擴(kuò)展

在應(yīng)用里注入xhprof

基于nginx展示分析結(jié)果

參考

1、Xhprof 的配置和使用方法 - 簡(jiǎn)書
https://www.jianshu.com/p/38e...
2、使用XHProf查找PHP性能瓶頸 - 程序猿成長(zhǎng)計(jì)劃 - SegmentFault 思否
https://segmentfault.com/a/11...
3、PHP性能追蹤及分析工具xhprof的安裝與使用 - 馬新才的技術(shù)博客 - SegmentFault 思否
https://segmentfault.com/a/11...
4、Tideways和xhgui打造PHP非侵入式監(jiān)控平臺(tái) | 我是大熊
http://blog.it2048.cn/article...


防盜版聲明:本文系原創(chuàng)文章,原發(fā)布于公眾號(hào)飛鴻影的博客(fhyblog)及博客園,轉(zhuǎn)載需作者同意。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28876.html

相關(guān)文章

  • 使用XHProf查找PHP性能瓶頸

    摘要:是開發(fā)的一個(gè)測(cè)試性能的擴(kuò)展,本文記錄了在應(yīng)用中使用對(duì)進(jìn)行性能優(yōu)化,查找性能瓶頸的方法。函數(shù)用于停止性能分析,并返回分析的數(shù)據(jù)。該參數(shù)用于為剖析結(jié)果添加額外的信息,該參數(shù)的值使用以下宏,如果需要提供多個(gè)值,使用進(jìn)行分隔。 XHProf是facebook 開發(fā)的一個(gè)測(cè)試php性能的擴(kuò)展,本文記錄了在PHP應(yīng)用中使用XHProf對(duì)PHP進(jìn)行性能優(yōu)化,查找性能瓶頸的方法。 安裝Xhprof擴(kuò)展...

    Xufc 評(píng)論0 收藏0
  • 使用XHProf分析PHP性能瓶頸(二)

    摘要:上一篇文章里,我們介紹了如何基于擴(kuò)展來分析性能,并記錄到日志里,最后使用擴(kuò)展自帶的在里展示出來。本次測(cè)試中,實(shí)際使用了擴(kuò)展切換為擴(kuò)展后里看不到數(shù)據(jù),原因未知。雖然來自但已經(jīng)很久不更新,官方源已經(jīng)顯示此包已廢棄,不再維護(hù)。 上一篇文章里,我們介紹了如何基于xhprof擴(kuò)展來分析PHP性能,并記錄到日志里,最后使用xhprof擴(kuò)展自帶的UI在web里展示出來。本篇文章將講述2個(gè)知識(shí)點(diǎn): ...

    Worktile 評(píng)論0 收藏0
  • tideways+toolkit對(duì)php代碼進(jìn)行性能分析

    toolkit是tideway官方提供的性能分析的命令行工具。如果你只是本地開發(fā)調(diào)試接口性能,不想安裝xhgui,那么使用toolkit就足夠了 安裝 安裝tideways拓展 git clone https://github.com/tideways/php-xhprof-extension.git cd php-profiler-extension phpize ./configure mak...

    rubyshen 評(píng)論0 收藏0
  • PHP 性能分析篇: Xhprof & Xhgui 介紹

    摘要:注這是我們應(yīng)用性能分析系列的第一篇,閱讀第二篇可深入了解,第三篇?jiǎng)t關(guān)注于性能調(diào)優(yōu)實(shí)踐。性能分析的行為也會(huì)影響應(yīng)用性能。主動(dòng)被動(dòng)性能分析主動(dòng)分析器在開發(fā)過程中使用,由開發(fā)人員啟用。它對(duì)性能的影響最小,同時(shí)收集足夠的信息用于診斷性能問題。 注:這是我們 PHP 應(yīng)用性能分析系列的第一篇,閱讀第二篇可深入了解 xhgui,第三篇?jiǎng)t關(guān)注于性能調(diào)優(yōu)實(shí)踐。 什么是性能分析? 性能分析是衡量應(yīng)用程...

    RdouTyping 評(píng)論0 收藏0
  • xhprof使用

    摘要:它報(bào)告函數(shù)級(jí)別的請(qǐng)求次數(shù)和各種指標(biāo),包括阻塞時(shí)間,時(shí)間和內(nèi)存使用情況。它獨(dú)有的數(shù)據(jù)計(jì)算的報(bào)告后處理階段。在數(shù)據(jù)收集時(shí),通過檢測(cè)循環(huán)來處理遞歸的函數(shù)調(diào)用,并通過給遞歸調(diào)用中每個(gè)深度的調(diào)用一個(gè)有用的命名來避開死循環(huán)。 簡(jiǎn)介 XHProf是一個(gè)分層PHP性能分析工具。XHProf是一個(gè)分層PHP性能分析工具。它報(bào)告函數(shù)級(jí)別的請(qǐng)求次數(shù)和各種指標(biāo),包括阻塞時(shí)間,CPU時(shí)間和內(nèi)存使用情況。一個(gè)函數(shù)...

    darryrzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<