笔者之前无论是微信公众号,还是零基础快速学习 ABAP 这套教程,都写过很多如何在 SAP ABAP On-Premise 系统里,使用 SAT,ST05 等事务码,对出现性能瓶颈的 ABAP 应用进行性能分析的实操文章。
在 SAP S/4HANA Public Cloud 里,ABAP 开发人员没办法用 SAPGUI 登录 ABAP 后台了,如果系统出现性能问题该怎么办呢?
答案是在浏览器里,使用 Fiori Launchpad 里的各种工具进行分析。
SAP 帮助文档提到,Fiori Launchpad 里下列这些应用,都能用来做性能分析:
System Workload
Sampled Work Process Data
HANA Thread Samples
System Outbound Communication
https://help.sap.com/docs/SAP_S4HANA_CLOUD/0cc8af9d2f2e40f38b38b46b49325e2d/877138b5acb84af5b7d2e6411c91d6e4.html
以 System Workload 为例,点击 Tile 后,能看到 technical monitoring cockpit 界面。
假设我们要对一个基于 ABAP RESTful Application Programming Model(RAP)开发的 Fiori 应用的 OData 服务调用场景进行性能分析。
在 Request Entry Type 里,设置 OData V2 为过滤条件,以便专注于 OData 维度的性能指标。
在图表中,单击看起来较高的 HANA 处理时间的对应区域,例如下午 1:40:
此时图表下方的 System Workload: Details 部分会相应刷新,显示选中的 HANA 处理时间的主要组成部分,即哪些请求消耗了这些处理时间。
为了获取更多详细信息,我们选择上图列表中第一个行项目红色高亮的箭头符号。随后的 Request Processing 屏幕显示了这个 OData 请求在不同时间段的执行性能数据:
该图表的上部显示了各项指标的累计总时长(Stacked Total Times),并且根据在图表中点击的内容,下部会呈现出相应的详细视图,也就是说,它列出了针对该工作负载最多20条、按照选择的指标排序的单条 ABAP 统计记录。
这样的设计不仅让开发人员从整体工作负载的角度把握全局,同时还能深入了解构成工作负载的每一条具体数据,从而大大提升后续分析的效果。
图中每条记录的颜色代码,是根据其与服务器平均响应时间的偏差来确定的:红色表示响应时间远高于平均水平,橙色显示略高于标准,而绿色则代表正常的响应时间。
接下来,我们点击按钮 Server Response Time/Request 来切换视图:
同前面介绍的累计总时长(Stacked Total Times)视图一样,上图单条记录的颜色标识,同样依据它们与平均服务器响应时间的偏差来确定。
图中每个请求的平均响应时间大约为一秒;但也有部分请求的响应时间明显高于这个平均时间,因此我们可以深入分析一下这些出现性能问题的请求。
在上图图表中,选择首个标红记录,即响应时间为 3,474.14 毫秒的那个请求。
在随后的 ABAP 统计记录页面中,饼图直观地展示了各部分对服务器响应时间的贡献。其中可以看出,数据库网络时延(Database Network Time)占据了主导地位。
另外一个不寻常之处在于,名为 DEFAULT 的数据库连接,总共发起了1,284次数据库请求。
为进一步探查原因,在 ABAP 统计记录页面的 Database Connection 部分中,选择首个连接名称为 DEFAULT 的记录,以便获得更多信息。
接着打开的 Database Connection Details 页面显示,该连接共发起了 1,284 次逻辑数据库请求,检索了将近 13,000 条数据库记录。
这解释了为何网络延时会如此之高:问题出在这些海量的数据库请求上。
另一个比较有用的指标,是 ABAP 统计记录页面中的 SQL Statement 界面,其表格列出了对 HANA 处理时间贡献最大的 SQL 语句。
我们可以验证一下对 Booking CDS View 的读取是否正常。将鼠标放到想要查看的 CDS View 记录上,在弹出的对话框里选择 Analyze Statement 即可:
随后会打开 Single SQL Statement Analysis 界面,这里能看到对 CDS View 读取的 SQL 语句在 HANA 数据库层面的 Prepared Plan 和 Executed Plan.
HANA 数据库专家可以根据这些 Plan 信息来做进一步的性能分析。
其实以上根据 ABAP SQL 语句展开数据库层面的 Execution Plan,在 ABAP On-Premise 系统的事务码 ST05 里也提供了同样的功能。对于详细的操作步骤,笔者另一套 ABAP CDS View 开发教程也做了详细介绍。
领取专属 10元无门槛券
私享最新 技术干货