Identity Manager 提供了 Profiler 实用程序,可以帮助您解决部署中遇到的表单、Java、规则、工作流以及 XPRESS 方面的性能问题。
表单、Java、规则、工作流以及 XPRESS 都会造成性能和伸缩问题。Profiler 将会分析这些不同区域所消耗的时间,从而可以确定这些表单、Java、规则、工作流或 XPRESS 对象是否产生了性能和伸缩问题,如果出现问题,将会进一步确定这些对象的哪些部分出现了问题。
本节将介绍如何使用 Identity Manager Profiler,并提供了一个教程,帮助您了解如何解决部署中存在的性能问题。
该信息分为以下几个主题:
仅在 7.1 Update 1 和更高版本上支持 Identity Manager Profiler。
本节提供了 Identity Manager Profiler 功能的概述。信息通过以下方式进行组织:
可以使用 Profiler 实用程序来执行以下操作
创建性能分析数据的“快照”。
“快照”是自上次重置所有收集到的分析结果以来累积的性能分析结果。
使用四种不同的数据视图来显示快照结果:
“调用树”视图提供了一个树表,用于显示整个系统的调用计时和调用计数。
“热点”视图提供了节点的平面化列表,用于显示汇总调用计时(不考虑父节点)。
“反向跟踪”视图提供了反向的调用栈,显示了从中调用该节点(称为根节点)的所有调用链。
“被调用者”视图提供根节点的汇总调用树(不考虑其父调用链)。
指定要包含在快照中的信息类型:
可以包含表单、工作流和 XPRESS 的所有元素,或将内容限制为一组特定的元素。
可以选择要包含在分析中或从分析中排除的特定 Java 方法和构造函数。支持对 Identity Manager 类和自定义类进行分析。
按如下方式管理项目快照。
将快照保存在项目的 nbproject/private/idm-profiler 目录中或项目以外的任意位置。
在 "IDM Profiler" 视图的“已保存的快照”部分,可以查看所有已保存快照的列表。
从项目中打开快照,或从项目之外的某一任意位置加载快照。
删除快照。
按名称搜索特定的节点。
本节介绍了 Profiler 如何查找和管理以下 Identity Manager 对象的源:
在“调用树”视图或“热点”视图中,可以双击任何与 Java 方法、工作流、表单、规则或 XPRESS 对应的节点,以查看该节点的源。
在使用 Profiler 拍摄快照时,服务器会评估所有的性能分析数据并发现该数据所依赖的源。然后,服务器将从系统信息库中获取所有这些源,并将它们包含在快照中。因此,您可以确信显示在快照中的 Identity Manager 对象会准确地反映捕捉到该快照的那一刻的情况。
此过程会增加快照的大小,但相对来说,源大小实际上只是总大小的一小部分。因此,您可以将快照发送到 Sun 的客户支持部门,而不必单独发送源文件。
在拍摄 Java 源的快照时,客户机将下载该快照,然后仔细查看快照以便从项目中捕获所有引用的 Java 源。在保存快照时,客户机将压缩这些源并将其附加到快照的结尾处。
然后,在您查看快照并转至 Java 源时,客户机将首先检查快照的内容。如果客户机在该处找不到快照内容,则会检查项目的内容。此过程允许您发送包含性能分析数据(来自自定义 Java 代码和 Identity Manager 代码)的快照。
在 Java 源快照中,不能假定源相对于服务器而言是最新的或始终可用。
以下各节包含评估 Profiler 提供的结果时要考虑的信息:
要计算根节点的自用时间,Profiler 将从根节点的总时间中减去所有子节点的时间。
因此,未分析的子节点的时间会反映在根节点的自用时间中。如果根节点的自用时间很长,则应该查明原因。您可能没有分析适当的方法,因此导致您处理的位置不当。
例如,假设方法 A 调用方法 B。
方法 A 总耗时为 10 秒(这里总时间包括调用方法 B 的时间),并且调用方法 B 总耗时也为 10 秒。
如果分析了方法 A 和 B,则调用栈会反映出该信息。您将看到,方法 A 的自用时间为 0秒,而方法 B 的自用时间为 10 秒(这 10 秒实际上是在方法 B 中花费的)。但是如果未分析方法 B,则只会看到调用方法 A 耗时 10 秒,并且 A 的自用时间为 10 秒。因此,您可能认为问题就是出在方法 A 中,而不是方法 B 中。
需特别指出的是,您在最初编译 JSP 期间,会注意到 JSP 的自用时间很长。如果您重置收集的结果,然后再重新显示该页,则自用时间将会显著减少。
因为 Java 分析策略中存在某些限制,所以 this() 或 super() 的初始调用将显示为构造函数调用的同级调用,而不是子级调用。请参见以下示例:
class A { public A() { this(0); } public A(int i) { } } and: class B { public static void test() { new A(); } } The call tree will look like this: B.test() -A.<init>(int) -A.<init>() Rather than this: B.test() -A.<init>() -A.<init>(int) |
不要被表面上许多 Identity Manager 守护线程(如 ReconTask.WorkerThread.run() 或 TaskThread.WorkerThread.run())所耗费的大量时间所误导。其中大部分时间是在休眠(等待事件)中度过的。必须仔细研究这些情况,以了解这些线程在处理事件时实际使用的时间。
本节对如何启动 Profiler 以及如何使用 Profiler 图形用户界面的各种功能进行了介绍。此信息分为以下几个部分:
由于 Profiler 将耗费巨大的内存,因此您应该显著增加服务器和 Netbeans Java 虚拟机 (Java Virtual Machine, JVM) 的内存。
增加服务器的内存:
打开 Netbeans 窗口,然后选择“运行时”选项卡。
展开“服务器”节点,右键单击“捆绑的 Tomcat”,然后从菜单中选择“属性”。
当显示“服务器管理器”对话框时,清除“连接”选项卡上的“启用 HTTP 监视器”复选框。
选择“平台”选项卡,将“VM 选项”设置为 -Xmx1024M,然后单击“关闭”。
增加 Netbeans JVM 的内存:
打开 netbeans-installation-dir \etc\netbeans.conff 文件,并找到以下行:
netbeans_default_options="-J-Xms32m -J-Xmx ...
将 -J-Xmx 值更改为 -J-Xmx 1024M。
保存并关闭该文件。
完成后,可以按下一节中所述的方法启动 Profiler。
可以使用以下任意方法从 Identity Manager IDE 窗口中启动 Profiler:
单击菜单栏上的“在主项目上启动 Identity Manager Profiler”图标。
当主 Identity Manager 项目是 7.1 Update 1 版本或更高版本时,“在主项目上启动 Identity Manager Profiler”图标将处于启用状态。
从菜单栏中选择“窗口”-> "IDM Profiler"。
Identity Manager Profiler 窗口会显示在资源管理器中。在此窗口中,从“当前项目”下拉菜单中选择一个 Identity Manager 项目,然后单击“控制”部分中的“启动 Identity Manager Profiler”图标。
在“项目”窗口中右键单击某个项目,然后从弹出式菜单中选择“启动 Identity Manager Profiler”。
在“项目”窗口中选择某个项目,然后从菜单栏中选择 "IdM" ->“启动 Identity Manager Profiler”。
启动 Profiler 时,会显示“Profiler 选项”对话框,您可以指定要使用的性能分析选项。指定 Profiler 选项中提供了设置这些选项的说明。
本节介绍了 Profiler 图形用户界面的功能以及如何使用这些功能。信息通过以下方式进行组织:
“Profiler 选项”对话框由以下选项卡组成:
使用这些选项卡上的选项,可指明要对哪些对象进行性能分析,以及要显示在性能分析中的元素。
指定 Profiler 选项后,单击“确定”可启动 Profiler。根据项目配置,Profiler 将执行以下两项操作之一:
如果使用的是常规 Identity Manager 项目(包含嵌入式 Identity Manager 实例),则 Profiler 会执行完整的生成过程,并将项目部署到 NetBeans 应用服务器中,然后启动 Profiler。
如果使用的是常规 Identity Manager 项目(包含外部 Identity Manager 实例)或远程 Identity Manager 项目,则 Profiler 会附加到为该项目配置的 Identity Manager 实例上。
可以选择 "IdM" ->“设置 Identity Manager 实例”来控制用于该项目的 Identity Manager 实例操作。
“模式”选项卡提供了以下选项:
仅 IDM 对象:选择该选项可分析表单、规则、工作流和 XPRESS 对象,但不能分析 Java 对象。
Java 和 IDM 对象:选择该选项可分析表单、Java、规则、工作流和 XPRESS 对象。
如果使用的是常规 Identity Manager 项目(包含外部 Identity Manager 实例)或远程 Identity Manager 项目,则“Java 和 IDM 对象”选项不可用。
在运行 Profiler 时,无法更改“模式”选项。必须先停止 Profiler 才能更改该选项。
“IDM 对象过滤器”选项卡提供了以下选项:
显示 IDM 对象详细信息
包含匿名源
匿名源是实时生成的表单或表单部分(如登录表单或 MissingFields 表单),它与驻留在 Identity Manager 系统信息库中的持久性表单之间没有对应关系。
选中此复选框可以在快照中包含匿名源。
清除此复选框可以从快照中排除匿名源。
选择“Java 过滤器”选项卡可以执行以下操作:
包含或排除 Java 过滤器
创建新的过滤器
删除现有的过滤器
恢复默认的过滤器
Java 过滤器以方法模式的形式提供,它们采用根据规范的方法名称执行包含或排除操作的模式来表示。其中,规范的方法名称为:
fully-qualified-class-name.method-name( parameter-type-1, parameter-type-2, ... )
对于构造函数,method-name 为 <init>。
下面列举了一些示例:
要排除所有构造函数,请启用“排除”复选框,并添加以下过滤器:
*.<init>(*)
要排除所有包含单个 org.w3c.dom.Element 参数的构造函数,请启用“排除”复选框,并添加以下过滤器:
*.<init>(org.w3c.dom.Element)
要排除所有 Identity Manager 类,请启用“排除”复选框,并添加以下过滤器:
"com.waveset.*" "com.sun.idm.*"
要仅分析自定义代码,请禁用“排除”复选框,并删除初始的 * include 过滤器,然后添加以下过滤器:
"com.yourcompany.*"
最后两个示例目前是等效的,因为这些过滤器仅会应用于自定义类和 Identity Manager 类。
如有必要,可以通过适当修改 build.xml 中的以下行来分析其他 JAR。例如,
<instrument todir="${lighthouse-dir-profiler}/WEB-INF" verbose="${instrumentor.verbose}" includeMethods="${profiler.includes}" excludeMethods="${profiler.excludes}"> <fileset dir="${lighthouse-dir}/WEB-INF"> <include name="lib/idm*.jar"/> <include name="classes/**/*.class"/> </fileset> </instrument> |
默认情况下,该配置包含所有自定义类和大多数 Identity Manager 类。强制排除了一些 Identity Manager 类,这是因为启用这些类会中断 Profiler 的运行。
例如,会排除工作流、表单和 XPRESS 引擎中的类,否则在分析 Java 和 Identity Manager 对象时,Profiler 将会生成难以理解的快照。
请注意,Java 过滤器将提供比 IDM 对象过滤器更细的过滤粒度。因此,使用 Java 分析会显著增加执行时间的开销,从而使性能分析结果出现巨大的偏差。由于是解释而非编译 Identity Manager 对象,因此分析开销可以忽略不计。因此,举例来说,根本没有理由排除工作流 A 而包含工作流 B,等等。
在运行 Profiler 时,不能修改 Java 过滤器。必须先停止 Profiler 才能更改 Java 过滤器。
“其他”选项卡提供了以下选项:
删除执行时间为 0 的快照节点:
如果希望快照包含所有已执行实体的调用信息(即使其执行时间为零),则需要禁用此选项(默认设置)。
即便是对于没有执行时间的节点,包含其调用次数信息可能也很有用。
启用此选项会删除这些节点,从而您可以关注最相关的性能分析数据。此外,启用此选项可以大大降低 Profiler 快照的大小。
Profiler 启动时自动打开浏览器:
如果希望在启动 Profiler 时自动打开浏览器(指向要进行性能分析的 Identity Manager 实例),请启用此选项(默认设置)。
如果不希望打开浏览器,则禁用此选项。
在快照中包含 Java 源:
启用此选项(默认设置)可以在快照中包含性能分析数据引用的任何 Java 方法的 Java 源。应始终将此设置用于字段中的快照。自定义 Java 相对较小,包含它对于支持工作很有价值。
仅在分析 Identity Manager 并且具有完整的 Identity Manager 源时,才禁用此选项。
在这种情况下,您不希望包含 Identity Manager 源,因为包含它会生成非常大的快照。(有关详细信息,请参见 Profiler 查找和管理源的方式。)
IDM Profiler 视图由以下区域组成:
“当前项目”区域包含一个下拉菜单,该菜单列出了所有的当前项目。使用此菜单可以选择要分析的项目。
“控制”区域包含四个图标,如下表中所述:
图标 |
名称 |
用途 |
---|---|---|
|
启动 Identity Manager Profiler |
启动 Profiler 并打开“Profiler 选项”对话框。 |
|
停止 Identity Manager Profiler |
停止 Profiler。 |
|
重置收集的结果 |
重置截止到此刻您收集的所有分析结果。 |
|
修改性能分析 |
重新打开“Profiler 选项”对话框,以便您可以更改任何设置来修改当前的分析结果。 |
“状态”区域会报告您是否与主机进行了连接,并提供有关 Profiler 启动、运行和停止的状态信息。
“性能分析结果”区域包含两个图标,如下表中所述:
图标 |
名称 |
用途 |
---|---|---|
|
启动 Identity Manager Profiler |
启动 Profiler 并打开“Profiler 选项”对话框。 |
|
重置收集的结果 |
重置截止到此刻您收集的所有分析结果。 |
“已保存的快照”区域提供了所有已保存快照的列表。
保存快照中提供了保存快照的说明。
此外,还可以使用以下按钮来管理这些快照:
打开:单击此按钮可以在“快照视图”窗口中打开已保存的快照。
还可以在“已保存的快照”列表中双击某个快照以打开该快照。
删除:在“已保存的快照”列表中选择一个快照,然后单击此按钮以删除选定的快照。
另存为:在列表中选择一个快照,然后单击此按钮将该快照保存到外部的任意位置。
加载:单击此按钮可以将任意位置的快照加载到“快照视图”窗口中。
打开快照时,结果会显示在位于 Identity Manager IDE 右上方的“快照视图”窗口中。
快照提供了几种数据视图,将在以下各节中进行介绍:
“调用树”视图由一个树表组成,该树表显示了整个系统的调用计时和调用计数。
此树表包含三列:
“调用树”列:列出了所有节点。
顶层节点为以下内容之一:
Thread.run() 方法,用于系统中的各种后台线程
例如,如果启用了 Java 性能分析,则会看到 ReconTask.WorkerThread.run() 方法。
请求计时
例如,如果查看 idm/login.jsp URL,则会看到 idm/login.jsp 的顶层条目。对于此条目,“时间”列中显示的数据表示一个或多个请求的总时间。“调用次数”列中显示的数据表示调用该页面的总次数。可以随后深入研究该数据,以了解是哪些调用耗用了这些时间。
“调用树”还包含“自用时间”节点。“自用时间”值表示该节点自身耗用的时间。(有关详细信息,请参见统计信息注意事项。)
“时间”列:列出了从其父节点调用每个节点时所耗用的时间。将使用相对于父节点时间的百分比来表示。
“调用次数”列:列出了从其父节点调用每个节点的次数。
“热点”视图提供了节点的平面化列表,用于显示汇总调用计时(不考虑父节点)。
此视图包含以下列:
自用时间:列出了每个节点耗用的总时间。
调用次数:列出了从其父节点调用每个节点的总次数。
时间:列出了每个节点及其所有子节点耗用的总时间。
“反向跟踪”视图提供了反向的调用栈,显示了从中调用每个节点的所有调用链。
可以使用这些统计信息来回答如下问题:如果我删除自此节点开始的特定调用链,将节省多少时间?
可以从其他任何快照视图中访问“反向跟踪”视图,方法是右键单击某个节点(称为根节点),然后从弹出式菜单中选择“显示反向跟踪”。
“时间”和“调用次数”数据值在“反向跟踪”视图中具有某些不同的含义:
时间:此列中的值表示从给定调用链调用根节点时,根节点耗用的时间。
调用次数:此列中的值表示从给定调用链调用根节点的次数。
“被调用者”视图提供了节点(称为根节点)的汇总调用树(不考虑其父调用链)。
如果存在一个问题区域,并且整个主调用树中的许多位置都调用了该区域,当您想查看该节点的整体性能分析时,这些统计信息将非常有用。
可以从其他任何快照视图中访问“被调用者”视图,方法是右键单击某个节点(称为根节点),然后从弹出式菜单中选择“显示被调用者”。
“被调用者”视图中所用的时间和调用次数数据值与那些在“调用树”视图中使用的数据值具有相同的含义。
右键单击“调用树”视图或“热点”视图中的任意节点,将显示一个弹出式菜单,其中的选项如下表中所述:
菜单选项 |
描述 |
---|---|
转至源 |
选择此选项可以查看 Java 方法、工作流、表单、规则或 XPRESS 所对应节点的 XML 源。有关此视图的详细信息,请参见 Profiler 查找和管理源的方式。 |
显示反向跟踪 |
选择此选项可以访问“反向跟踪”视图。有关此视图的详细信息,请参见“反向跟踪”视图。 |
显示被调用者 |
选择此选项可以访问“被调用者”视图。有关此视图的详细信息,请参见“被调用者”视图。 |
在“热点”视图中查找 |
选择此选项可以在“热点”视图中查找节点。有关此视图的详细信息,请参见“热点”视图。 |
“列表选项”->“排序”-> |
选择此选项可以看到以下选项
|
“列表选项”->“更改可视列” |
选择此选项可以更改在“调用树”或“热点”列表中显示的列。 当显示“更改可视列”对话框时,您可以选择以下一个或多个选项:
|
使用位于“快照视图”窗口顶部的“搜索”图标 ,可以在“调用树”视图或“热点”树中按名称来搜索节点。
此外,还可以右键单击“调用树”视图或“热点”视图中的任意节点,然后从弹出式菜单中分别选择“在‘调用树’视图中查找”或“在‘热点’视图中查找”来搜索节点。
Profiler 提供了几个选项来保存快照。有关这些选项的描述,请参见下表:
图标 |
名称 |
用途 |
---|---|---|
|
“在项目中保存快照”图标(位于“快照视图”窗口的顶部) |
在项目的 nbproject/private/idm-profiler 目录中保存快照。Profiler 视图的“已保存的快照”部分会列出在项目中保存的快照。 |
|
“在外部保存快照”图标(位于“快照视图”窗口的顶部) |
将快照保存到外部的任意位置。 |
|
“另存为”按钮(位于“已保存的快照”区域中) |
将快照保存到外部的任意位置。 |
Identity Manager 提供了一个教程 (profiler-tutorial.zip),可以帮助您了解如何使用 Profiler 来解决表单、Java 规则、工作流和 XPRESS 存在的问题。
可以使用以下步骤完成本教程。
选择“文件”->“新建项目”。
当显示“新建项目”向导时,指定以下内容,然后单击“下一步”:
填充“名称和位置”面板上的以下字段,然后单击“下一步”:
项目名称:输入 Idm80 作为项目名称。
项目位置:使用默认位置或指定其他位置。
项目文件夹:使用默认文件夹或指定其他文件夹。
当显示“Identity Manager WAR 文件位置”面板时,输入 Identity Manager 8.1 war 文件的位置。通常,解压缩此文件可在相同目录中创建一个 idm.war 文件。
单击“下一步”转至“系统信息库设置”面板。
无需更改此面板上的默认设置,直接单击“完成”即可。当看到“生成成功”消息显示在“Identity Manager IDE 输出”窗口中时,就可以提取 Profiler 教程文件了。有关说明,请参见第 2 步:解压缩 Profiler 教程。
在项目根目录中解压缩 profiler-tutorial.zip。提取的文件包括:
<project root>/custom/WEB-INF/config/ProfilerTutorial1.xml <project root>/custom/WEB-INF/config/ProfilerTutorial2.xml <project root>/src/org/example/ProfilerTutorialExample.java <project root>/PROFILER_TUTORIAL_README.txt
启动 Profiler。继续执行第 3 步:启动 Profiler。
按照准备工作中提供的说明增加服务器和 Netbeans JVM 的内存。
使用概述中介绍的任一方法启动 Profiler。
当显示“Profiler 选项”对话框时,可以指定性能分析选项。
有关所有不同 Profiler 选项的详细信息,请参见指定 Profiler 选项。
为实现本教程的教学目的,请指定以下 Profiler 选项:
在“模式”选项卡上,选择“Java 和 IDM 对象”以分析表单、Java、规则、工作流及 XPRESS 对象。
选择“Java 过滤器”选项卡。
使用以下步骤禁用除自定义 Java 类(本例中为 org.example.ProfilerTutorialExample)以外的所有 Identity Manager Java 类:
单击“确定”以运行 Profiler。
如果您是第一次对某个项目运行 Profiler,或在近期执行了“清理项目”操作,则 Profiler 将需要几分钟时间来完成处理。
Profiler 完成处理后,系统会提示您登录。
输入密码 configurator,选中“记住密码”复选框,然后单击“确定”以继续。
当显示 Identity Manager 窗口时,请登录。
通常,您应以其他的用户身份登录到 Identity Manager,而不是再以 configurator 身份登录。您已经以 configurator 身份登录到 Profiler,Identity Manager 会话池仅允许一个用户具有一个条目。使用多个条目会导致会话池中断,并且可能造成性能分析结果出现偏差,出现更细化的性能问题。
但是,对于此简单示例,会话池没有出现任何问题,因此您可以使用 configurator/configurator 登录。
在 Identity Manager 中,选择“服务器任务”->“运行任务”,然后单击 "ProfilerTutorialWorkflow1"。
此教程可能需要一些时间进行响应。
尽管您现在可以拍摄快照,但您最好先重置结果、运行 Profiler、再次运行 Profiler,然后再拍摄快照。
最佳的做法是在拍摄快照之前运行几次 Profiler,以确保预备好所有缓存、编译好所有 JSP 等等。
通过运行几次 Profiler,您可以重点解决实际的性能问题。不适合应用此做法的唯一一种例外情况是:存在自动填充缓存方面的问题。
Identity Manager IDE 会下载您的快照,并在窗口的右侧显示结果。
此区域为“调用树”视图。在“调用树”的顶部,可以看到 /idm/task/taskLaunch.jsp 及其“时间”列中列出的时间。该时间应该表示整个请求耗时六秒以上。
展开 /idm/task/taskLaunch.jsp 节点,会看到 ProfilerTutorialWorkflow1 耗时六秒。
展开 ProfilerTutorialWorkflow1 节点。请注意,activity2 耗时四秒,activity1 耗时两秒。
展开 activity2。
请注意,action1 耗时两秒,action2 耗时两秒。
展开 action1,请注意,<invoke> 也耗时两秒。
双击 <invoke> 以打开 ProfilerTutorialWorkflow1.xml,并突出显示以下行:
<invoke name=’example’ class=’org.example.ProfilerTutorialExample’/> |
您应看到调用 ProfilerTutorialExample 方法耗时两秒。
实际上,您浏览的是快照中捕获的 XML 源,而不是项目中的源。快照是完全自包含的。(有关详细信息,请参见 Profiler 查找和管理源的方式。)
选择 "CPU:<date>< time>" 选项卡以返回到您的快照。
展开 <invoke> 节点,请注意,Profiler 在 Java ProfilerTutorialExample.example() 方法中耗时两秒。
双击该方法的名称以打开 ProfilerTutorialExample.java 源,并突出显示以下行:
Thread.sleep(2000); |
存在问题!此方法包含一个两秒的线程休眠。
如果返回到“调用树”,则可以看到所有耗时两秒的路径都通向此方法。(您应看到三个路径,共耗时六秒。)
选择“热点”选项卡(位于“调用树”区域的底部)以打开“热点”视图。请注意,ProfilerTutorialExample.example() 的自用时间总计为六秒。
(有关“热点”的详细信息,请参见使用“快照视图”。)
右键单击 ProfilerTutorialExample.example(),然后从弹出式菜单中选择“显示反向跟踪”。
将在该区域的底部显示一个新的“反向跟踪”选项卡。
展开“反向跟踪”选项卡上的 ProfilerTutorialExample.example() 节点,会看到从三个位置调用了此方法,并且从每个位置调用此方法时都耗时两秒。
(有关“反向跟踪”的详细信息,请参见使用“快照视图”。)
单击“在项目中保存快照”图标以保存您的快照,然后将其关闭。
如果查看 "IDM Profiler" 选项卡上的“已保存的快照”部分,则会看到快照。(您可能需要向下滚动才能看到。)
选择已保存的快照,然后单击“打开”以重新打开该快照。
可以使用“另存为”按钮在外部位置保存您的快照,并可使用“加载”按钮加载位于项目外部的快照。
再次关闭该快照。
本教程的下一部分将说明如何分析工作流 ManualAction。
在 Identity Manager 中,选择“服务器任务”->“运行任务”,然后单击 "ProfilerTutorialWorkflow2"。
稍等片刻,将会显示一个空表单。
单击“保存”,将会显示进程图。
再次选择“服务器任务”->“运行任务”。
返回到 Identity Manager IDE 的 "IDM Profiler" 视图,然后单击“性能分析结果”部分中的“重置收集的结果”图标。
现在,单击 Identity Manager 中的 "ProfilerTutorialWorkflow2"。
当再次显示空表单时,单击“保存”。
在 "IDM Profiler" 视图中,单击“拍摄快照”。
几秒钟后,快照会显示在“调用树”区域中。您应看到 /idm/task/workItemEdit.jsp 耗时六秒以上。(此结果对应于工作流中的手动操作。)
展开 /idm/task/workItemEdit.jsp 节点,请注意,运行 ManualAction 表单中的所有派生共耗时六秒。
展开 Derivation、displayNameForm、variables.dummy 和 <block> 节点。
您应看到 <block> 耗时六秒,其中 Profiler 在三次调用 ProfilerTutorialExample.example() 方法时各耗时两秒。
可以双击 <block> 查看源。