使用tideways绘制php callgraph(profiling)

零. 概述

tideways是一款付费的在线应用,其诸多强大功能可见这里
你可以在官网上注册,并免费使用一个月。如果想继续使用,又不想付费怎么办?答:换个邮箱!

本文主要讲述如何用tideways绘制php callgraph(profiling)。
image

从callgraph上,你可以很清楚的看到:
- php函数调用关系
- 每步执行时间
- 函数执行次数

并依此对代码进行优化。

相比于xdebug和xhprof, tideways的优势如下:
- 支持代码级定制(xdebug只能在php.ini设置)
- 持续维护,支持php7及以上版本(xhprof已不再维护
- 更丰富的UI和在线功能支持

一.安装

echo "[tideways]
name = Tideways
baseurl = https://s3-eu-west-1.amazonaws.com/qafoo-profiler/rpm" > /etc/yum.repos.d/tideways.repo
rpm --import https://s3-eu-west-1.amazonaws.com/qafoo-profiler/packages/EEB5E8F4.gpg
yum makecache --disablerepo=* --enablerepo=tideways
yum install tideways-php tideways-cli tideways-daemon

php -m 查看是否安装成功–看是否有tideways

执行

<?php
$result = class_exists('Tideways\Profiler');
var_dump($result);

得到true

cat /etc/php.d/40-tideways.ini查看配置

; Configuration for Tideways Profiler Extension
; priority=40
extension=tideways.so

; Tideways Application API-Key to configure when using just one application on
; this php installation.
;tideways.api_key=

; Configure the profiling sample rate for this PHP server globally.  The given
; number is an integer representing percent between 0 and 100
tideways.sample_rate=25

; Automatically detect transactions and exceptions of a given framework The
; following frameworks are currently supported:
;
; symfony2, symfony2c, shopware, oxid, magento, zend1, zend2, laravel,
; wordpress
;tideways.framework=

二. 界面上添加应用(application)

1. 建立Organization

主面板右上角设置–>Organizations

image

2. 建立application

主面板右上方–>Create Application

image

三.数据采集

1. 配置

1.1 获取application对api_key
  • 主面板上,点击相应application。
  • 在applicationd主界面点上方导航条settings
    image
  • 在settings页面中能得到API Key。
    image

1.2 配置

  • php.ini中的配置
tideways.api_key=1.1中的api_key
tideways.sample_rate=25 //采样率,采集相应百分比的请求

如果是在php.ini中进行配置,对于来自浏览器的请求,要重启fpm才生会生效。

  • 直接在php代码中配置
if (class_exists('Tideways\Profiler')) {

    \Tideways\Profiler::start(array(
        'api_key' => 'a68KSPOFqNKdyC7W',
        'sample_rate' => 100,
    ));
}
  • 更多配置方法参考这里

2. 启动tideways-daemon

  • service tideways-daemon start
  • 停止使用stop
  • 日志通常位于/var/log/tideways/daemon.log(可以通过ps -ef| grep tideways-daemon确认)

更多关于tideways-daemon的配置参见这里

3. 触发trace

直接通过http请求触发php代码执行即可(通过浏览器,curl等都可以)。如果sample_rate是100,每个请求都会触发trace。

4. 触发callgraphtrace(profiing)

与3一样,只是相应的http请求需要带上特定参数。参数获取方法如下:
- 主页面板中点击相应applicaiton
- 在applicationd主界面中点击TriggerTrace

image
- 在新打开的页面中找到“Using GET-Parameters”,从文本框中复制请求参数,接到你原有的http GET请求参数后面即可。

5. 查看

  • 主页面板中点击相应applicaiton
  • 在applicationd主界面中点击All Traces
  • 有图钉标识的为带有callgraph信息的trace, 其它为普通trace
    一个callgraph的示例如下
    image

6. 可能碰到的问题及解决

这里列的比较详细,请猛击

四.其它

1. 如何对命令行程序触发callgraphtrace?
  • 主界面点击右上角设置–>User Settings
  • 新页面中点左侧>_console(链接
  • 页面上获取 cli setting,类似下面这样
tideways import "https://profiler.qafoolabs.com/api/cli-import-settings/7260?hash=eb9e77a5536029976a1508d0c9caecc0c4e87d238ecaa6b061b84ed400b9a17f&time=1509590786"
  • 在命令行下执行上述命令
  • 执行所要采样的php代码即可
tideways run sogo/yaokan php entry.php Test

其中sogo是Organization名子,yaokan是Application名字

2. 给trace起个名字

如果不做处理,每个trace都叫default,不方便查找。
可以使用如下代码给trace命名。注意,要在Tideways\Profiler::start()之后调用。

\Tideways\Profiler::setTransactionName($transactionName);

完整示例

if (class_exists('Tideways\Profiler')) {
    \Tideways\Profiler::start(array(
        'api_key' => 'a68KSPOFqNKdyC7W',
        'sample_rate' => 100,
    ));

    $transactionName = $_SERVER['SCRIPT_NAME'];//可以用你希望的任何规则定义
    \Tideways\Profiler::setTransactionName($transactionName);
}
3. 如何采集sql语句执行时间
  • application setting界面“Detailed SQL Profiling”, 板块点击“enable”
  • 触发callgraphtrace采集
  • 在界面上查看采集数据详情,其中的timeline中可以看到sql执行时间
TensorBoard的profiling功能主要用于分析和优化TensorFlow模型的性能。使用TensorBoard的profiling功能,可以查看模型的计算图、内存使用情、运行时间等信息,以帮助开发者识别性能瓶颈并进行优化。 要使用TensorBoard的profiling功能,首先需要在代码中进行配置和启动。在TensorFlow 2.0中,可以通过以下步骤来使用profiling功能: 1. 导入必要的库和模块: ```python import tensorflow as tf from tensorboard.plugins.profile import profiler_v2 as profiler ``` 2. 在代码中的适当位置添加profiling代码: ```python # 创建一个Profiler profiler_profiler = tf.profiler.experimental.Profiler('logdir') # 开始profiling profiler_profiler.start() # 运行需要profiling的代码 # ... # 结束profiling profiler_profiler.stop() # 保存profiling数据到文件 profiler_profiler.save('logdir') ``` 3. 运行代码并生成profiling数据文件。 4. 启动TensorBoard,并加载profiling数据文件进行可视化分析: ```shell tensorboard --logdir=logdir ``` 通过TensorBoard的界面,可以查看模型的计算图、内存使用情况、运行时间等信息,以及进行性能优化分析。 请注意,使用TensorBoard的profiling功能需要安装TensorBoard和tensorboard-plugin-profile两个库,并且要确保版本兼容性。 以上是使用TensorBoard的profiling功能的基本步骤和方法。根据具体的需求和问题,可能需要进一步深入学习和了解TensorBoard的profiling功能的更高级用法和技巧。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [tensorboard使用注意事项](https://blog.csdn.net/lizz2276/article/details/108174501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值