ABAP
运行跟踪简介
为了分析ABAP程序的运行性能,除SQL跟踪(TCODE:ST05)之外还有个很重要的工具那便是ABAP跟踪(SE30)。
1. 使用ABAP跟踪
这个工具的使用方法和SQL跟踪一样简单:
1) 运行事务代码SE30
2) 限制变式的选择和创建可参照下面的介绍
3) 然后确保程序至少被执行了一次,最好多次,以便填充buffer和cache。我们可以反复执行程序,以得到更新的根宗结果。这样可避免我们可以忽略我们测试的程序第一次执行所带来的成本
4) 在ABAP跟踪工具里执行你的程序,可以是事务代码,程序和功能模块
5) 关掉跟踪
6) 跟踪结果所在的文件在file info中可以看到
7) 评估跟踪文件
ABAP运行分析初始屏幕
第一个:程序部分
第二个:语句部分
第三个:运行时间和类型部分
推荐间三个测量变式:
a) PREF_BY_CALL(default):在程序部分什么都不选,语句部分除kernel level runtime administration和internal table change and read operation之外其它都选,在第三部分设置aggreation ‘per call position’和最大的文件的大小为20000k,最大的运行时间为3000sec
b) PREF_BY_CALL_ITAB,除了选上internal table change and read operation外其它的更上面一样
c) PREF_NO_AGG,除了把第三部分的no aggregation设成ON,其它的跟PREF_BY_CALL一样
当ABAP程序执行完之后,回到ABAP跟踪的初始界面,你就会看到最新的跟踪文件。
通过‘other files’ 你可以得到前几次测量的跟踪文件,注意,SE30的跟踪文件在8天之后将会自动被删除。另外由于跟踪文件是存储在你所登陆到的应用服务器之上的,所以你要清楚你登陆的是哪个服务器。
2. 跟踪结果概览
如果你要分析跟踪数据,你就会看到下图的结果:
这个屏幕最重要的信息便是在数据库和应用服务器层的总共运行时间。这些地方正是你可以优化的地方。或许你已经对总共的运行时间有所期望或受外界所限。通常情况下为了达到2sec的响应时间,你在应用层的运行时间要远远小于2sec。而较大的批处理程序可能需要较长的时间。当然运行时间的好坏,还需要你根据具体情况去判断。
图中的红绿颜色没有什么本质上的意义,只是如果它的百分比达到了50%就会由红色变成白色。
对于一个ABAP程序来说数据库和系统的运行时间应该比较短,至少不能太大。对于系统运行时间来说,10%已经是想大大了。对于数据库来说运行时间一般不能超过50%。ABAP是逻辑处理的主要部分,所以ABAP应当占有最多的运行时间。
1. 跟踪命中列表
这里的每一行记录了每个操作的处理和运行时间。如果你在限制条件中把aggregation设为per operatrion那么一个操作可能会出现几行。这里的唯一主键便是CALL,PROGRAM NAME和LINE。
比较重要的测量值是:NO,GROSS和NET,它告诉了你每个操作执行的频次,所需的时间,GROSS包含子操作所花费的时间,NET只计算了操作本身所需的时间。注意时间的单位是微秒,时间是总时间不是每部操作的时间。
1. 检查跟踪命中列表
首先以gross time倒序排列检查列表,你看到的也是缺省的显示方式。
l 高gross time便是消耗资源较高的分支
l 然后按照NET TIME排倒序,高的NET TIME便是消耗资源较高的语句
我们可以把操作分为以下几种类型:
l 模块单位如methods, function和forms
l Internal tables
l Remote function calls
l Database operations
l Other types
2. AGGREATION NO MODE
AGGREATION NO MODE有更加详细的分析报告。因为每一种类型的操作都被跟踪了,所以它比上面的形式具有更多的屏幕。