使用 ABAP 事物码 SAT 对从浏览器打开的 SAP 应用进行性能监控和测量

在开始介绍事物码 SAT 之前,让我们简单回顾一下 ABAP Platform 的概念。
ABAP 平台是基于 SAP HANA 数据库和数据管理平台的基于 ABAP 的 SAP 解决方案的基础。ABAP 平台充分利用了 SAP HANA 提供的底层创新。这与 SAP NetWeaver
不同,在 SAP NetWeaver 中,Application Server ABAP 为 SAP 支持的所有数据库系统
提供了一个公共层。相比之下,ABAP 平台是完全为 SAP HANA 优化的。
ABAP 平台是基于 ABAP 平台的基础插件。
在 SAP HANA 数据库中,池(pool)和集群表(cluster tables)的概念被认为是过时的。因此,不再支持池表和集群表。任何现有的池表、集群表、表池(table pools)和表集群(table clusters)都已删除。
在 ABAP Platform 里,现在可以配置 ABAP 守护进程(Daemon)的自动启动。配置的守护进程应该由系统或应用程序服务器实例自动启动,并显示在事务 SMDAEMON
中。为了允许配置监控,ABAP Daemons Start-Up configuration 视图已经添加到事务中。
Release 7.53 与内核 773 一起发布,它不向下兼容任何较低的 ABAP 版本。因此,以技术上不兼容的方式改变了几个关于 ICM 的参数。
ABAP 服务器和 SAP Web Dispatcher 在服务器角色中支持 HTTP/2 协议已经有一段时间了,但是,默认情况下它没有启用。HTTP/2 通过重用单个 TCP 连接和额外的压缩提供了性能改进,特别是在慢速网络中。从 7.53 版本开始,默认启用 HTTP/2 协议。
除了在服务器角色中支持 HTTP/2 外,ABAP HTTP 客户端现在也支持 HTTP/2 协议。如果所有连接参数(目标主机、端口、代理、客户端证书)都相同,建立的连接将跨 ABAP HTTP 客户端类 CL_HTTP_CLIENT 的多个实例和多个用户会话重用。如果通信伙伴也支持 HTTP/2 协议,这种重用可以显著减少已使用的出站连接的数量。
默认情况下,客户端角色中 HTTP/2 的使用是关闭的,以避免可能的不兼容。它可以通过设置 profile 参数 icm/HTTP/client/support_http2 = true
来打开。
最后,就是本文要介绍的事物码 SAT. 这个事物码是 ABAP 系统里的一个工具,用于对 SAP 应用进行性能监控和度量。
下面是一张 SAP ABAP 系统事物码 SAT 的截图:

大家最常使用 SAT 的方式,也就是在上图 In Dialog 区域里,输入事务码,ABAP 报表或者 Function Module 的名称,然后点击 Execute 按钮. 如此一来,指定的这些 ABAP 程序会在 SAT Trace 模式下运行,自动生成包含了执行性能和调用栈等信息,在程序结束退出 Trace 模式下之后即可查看。
SAT 生成的 Trace 结果,以树形结构显示 ABAP 程序执行的每一调用栈和性能数据,无论是进行性能分析,还是学习一段陌生代码的执行逻辑,都非常有用。
那么这里有个问题,如果想跟踪或者想研究的应用,是通过浏览器打开的,例如 SAP S/4HANA Fiori 应用,SAP ABAP WebDynpro,WebClient UI 这种,倘若想研究浏览器里某个应用点了某个按钮之后,背后发生了什么,如何用 SAT 来跟踪?这也是笔者的同事过去经常问我的一个问题。
尽管我们可以用 SAT 界面右部的 In Parellel Session 来完成,但 Jerry 觉得其步骤稍嫌繁琐,反正 Jerry 从来不用,详细步骤在这篇 SAP 社区博客里有详细介绍。

本文介绍另一种办法,这也是 Jerry 工作中用的办法。
假设有一个 SAP Fiori 应用,点了某个按钮后,会触发一个 OData 服务调用,从 ABAP Netweaver 服务器上取数据。我已经在 Chrome 开发者工具里把这个 OData 服务的 url 抄了下来,维护在 Postman 里,随时可以重复调用。

这种方法的思路概括如下:
(1) 在要跟踪的后台代码的起始和结束的位置各打一个断点,假设起始位置断点为 1,结束位置为 2.
(2) 在浏览器或者其他工具里启动应用,触发断点 1,此时在调试器里开启 SAT 的 Trace 模式。
(3) 调试器里直接按 F8,程序会执行到断点 2 然后停下来。此时在调试器里关闭 SAT 的 Trace 模式。
(4) 结束程序的执行,回到 SAT,查看 Trace 结果。这种方法的关键在于找准断点 1 和断点 2 的位置。如果是跟踪自己熟悉的应用,找准位置不难;如果跟踪的应用自己不熟悉,那么就在框架开始执行和结束的位置各设置一个断点就好了。
还是以上面的 OData 服务为例,因为抄下来的 url 片段包含了/sap/opu/odata/sap, 这起始已经告诉了我们在哪里设置断点。打开事务码 SICF,输入 OData 然后查询,在结果列表里双击 OData 节点:

凡是浏览器里从 ABAP Netweaver 后台发起的 HTTP 调用,只要 url 包含/sap/opu/odata, 必定会被 SICF 事务码里 odata 这个节点分配的 ABAP Handler 类处理。

双击进入这个类的 HANDLE_REQUEST 方法,在其方法开始的位置设置断点 1,在这个方法的最后一行设置断点 2.

现在打开浏览器或者执行 Postman 以触发断点 1,在调试器里点击 New Tool 按钮,

在弹出窗口里,点击 Special Tools 里的 Trace 按钮,

双击这个图标,开启 SAT 的跟踪模式:

Status 栏看到绿灯,说明当前已经在 Trace 模式了:

F8 执行到第二个断点,双击下图蓝色区域的图标以关闭 SAT 跟踪模式。关闭后,Status 栏的绿灯变红,同时 TraceFile 里出现一个卷轴图标,提示我们 SAT 跟踪文件已经生成了。

打开 SAT 事务码,看到这个成功生成的结果文件。

树形结构的调用栈,每个栈的执行性能清晰地罗列出来。

总结
本文首先介绍了 ABAP Platform 的基本概念,接着详细叙述了事物码 SAT 在对通过浏览器启动的 SAP 应用进行性能监控和测量的具体步骤。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/53c144203d32617c2ab13f324】。文章转载请联系作者。
评论 (2 条评论)