使用流程检测数据进行高速缓存调优

在 Process Admin Console 的“服务器管理”区域中,您可以选择监控 > 检测以在“检测”监控器中显示流程检测数据。 如果显示的数据指示高速缓存设置的高速缓存未命中数意外高,那么可以编辑 100Custom.xml 文件并覆盖高速缓存设置的有问题的缺省值;但是,并非所有高速缓存都是可配置的。 “检测”监控器的 PO 工厂存储库部分中反映了持久对象 (PO) 工厂高速缓存设置和存储库高速缓存设置。 在某些情况下,您可能需要用新值来覆盖高速缓存设置的缺省值。

有关使用 "检测" 监视器来显示或记录流程检测数据的更多信息,请参阅主题 捕获流程检测数据有关 "检测" 监视器中未反映的高速缓存和与高速缓存相关的设置的信息,请参阅主题 高速缓存和与高速缓存相关的设置

不可配置的高速缓存

您无法配置“检测”的 FIFO 部分中的以下高速缓存:
  • ContextAndTypeTreeElements
  • ContextTreeElements
  • 依赖关系
  • ManagedAssets
  • ProjectDependency
  • SOAPConnector.XMLTypeDescriptors
  • UUIDListKey
  • Version Details
  • VersionSummaryId
  • WebAPIUserID
  • XMLTypeDescriptorContextContextAndTypeTreeElements

PO 工厂高速缓存设置和存储库高速缓存设置

对于 PO 工厂高速缓存设置和存储库高速缓存设置,90% 的高速缓存命中率被视为相当令人满意。 然而,高于 50% 的高速缓存未命中率则需要进行调查。 要提高高速缓存命中数与高速缓存未命中数的比率,可以为 100Custom.xml 文件中的高速缓存设置指定新值。 这些新值将覆盖高速缓存设置的现有缺省值,这些缺省值通常位于其他 XML 配置文件 (例如 00Static.xml 文件)中。 通常,修改高速缓存设置是一项迭代任务。

注: 将不会根据指定的高速缓存大小预先分配内存。 高速缓存最大可扩展至指定的大小。 高速缓存大小行表示最近一次读取高速缓存的大小。

有关 100Custom.xml 文件及其关联 XML 配置文件的使用和位置的信息,请参阅主题 100Custom.xml 文件和配置 及其子主题。

以下部分中描述了“检测”监控器中反映的 PO 工厂高速缓存设置和存储库高速缓存设置:

PO 工厂高速缓存设置

持久对象 (PO) 工厂是用于创建持久对象的类。 每个持久对象类型均有一个 PO 工厂,每个 PO 工厂有一个高速缓存,用于对此类型持久对象进行缓存。

Business Automation Workflow中有两种类型的 PO 工厂设置: 已版本化和未版本化。 对于已版本化持久对象,每次更改对象时,新对象都将单独进行保存而不会覆盖旧版本。 这样您就可以查看随时间发生的更改。 对于未版本化持久对象,仅保留最新修改,并将丢弃较旧的版本。

下表列出位于“检测”监控器的 PO 工厂 > 高速缓存命中数PO 工厂 > 高速缓存未命中数部分中的已版本化和未版本化持久对象。 该表还列出您可能需要覆盖以提高高速缓存命中数与高速缓存未命中数之比的对应的 PO 工厂高速缓存设置。 除非另行指出,否则 XML 配置文件中会启用所有高速缓存设置。

表 1。 PO 工厂高速缓存设置
“检测”监控器中 PO 的类型 设置与描述 要在 100Custom.xml 文件中添加或更新的设置
其中之一:

人工制品
BPDArtifactReference
BPD参数
BlueprintSubscription
BPD活动
BPD参数
教练
CoachResource
CoachView
连接器
贡献
ESArtifact
EnvironmentVariable

EnvironmentVariableSet
Epv
EpvVar
EventSubscription
ExtendedProperty
ExtendedPropertySet
HistoricalScenario
InfoPathForm
布局
ManagedAsset
公制单位
参与者
ProjectDefaults
ProjectDependency
RefPO
报告
ReportVariable
ResourceBundleGroup
SLA
记分牌
SimulationScenario
TimingInterval
TrackingGroup
UITheme
UserAttributeDefinition
WebService
default-versioned-po-cache-size
此设置控制版本化持久对象 (PO) 高速缓存中的对象数。 缺省值为 5000
对于流程应用程序和 coach 相对较少的低容量环境,缺省值可能足够。 但是,对于具有大量流程应用程序或 coach 的更复杂环境,您可能想要提高该值,从而使流程应用程序和 coach 在初始使用后保留在高速缓存中。 此步骤可提高访问这些流程应用程序和 coach 的响应时间。
每当流程检测数据指示 PO 工厂高速缓存未命中数过高时,您都可以提高版本化 PO 高速缓存的值。 您可能需要迭代多个值,直至确定适合于特定场景的最佳值为止。 更改值后,请再次检查流程检测数据并根据需要调整该值。
该设置位于适用的 00Static.xml 文件中,但是必须将该设置添加到 100Custom.xml 文件来更新该设置的缺省值。
<common>
   <default-versioned-po-cache-size merge="replace">7000</default-versioned-po-cache-size>
</common>
其中之一:

BPMSnapshotStatus
CaseProperty
ECM对象
EnvironmentType
GovernanceAssignment
GovernanceEvent
MonitorProjectInterchange
PCIndexAction
PCIndexer
PC注册
优先级
ProjectSubscribed
ProjectSubscription
RepositoryLog
SharedToolKitUsage
快照
TimePeriod
default-unversioned-po-cache-size
此设置控制未版本化持久对象 (PO) 高速缓存中的对象数。 缺省值为 1000
对于流程应用程序和 coach 相对较少的低容量环境,缺省值可能足够。 但是,对于具有大量流程应用程序或 coach 的更复杂环境,您可能想要提高该值,从而使流程应用程序和 coach 在初始使用后保留在高速缓存中。 此步骤可提高访问这些流程应用程序和 coach 的响应时间。
如果流程检测数据指示 PO 工厂高速缓存未命中数过高,那么您可以提高未版本化 PO 高速缓存的值。 您可能需要迭代多个值,直至确定适合于特定场景的最佳值为止。 更改值后,请再次检查流程检测数据并根据需要调整该值。
该设置位于适用的 00Static.xml 文件中,但是必须将该设置添加到 100Custom.xml 文件来更新该设置的缺省值。
<common>
   <default-unversioned-po-cache-size merge="replace">2000</default-unversioned-po-cache-size>
</common>
其中之一:

项目
ContentObject
ContentObjectInstance
time-based-project-cache-enable
time-based-project-cache-enable 设置指定持久性对象 (PO) 高速缓存是否是基于时间的高速缓存。 缺省情况下启用该设置。 到期时间间隔由 po-cache-expiration-interval 控制,其缺省值为 20 秒。
如果指定的到期时间间隔过后此高速缓存到期,那么它会重置。 由于高速缓存重置后会对其进行读取,因此有时可能会看到高速缓存计数错误(高于高速缓存大小)。
default-unversioned-PO-cache-size
default-unversioned-PO-cache-size 设置用于控制未版本化的持久对象 (PO) 高速缓存中的对象数。 缺省值为 1000
该设置位于适用的 00Static.xml 文件中,但是必须将该设置添加到 100Custom.xml 文件来更新该设置的缺省值。
<common>
   <time-based-project-cache-enable>true</time-based-project-cache-enable>
   <po-cache-expiration-interval>20000</po-cache-expiration-interval>
   <default-unversioned-po-cache-size merge="replace">2000</default-unversioned-po-cache-size>
</common>

存储库高速缓存设置

下表列出“检测”监视器的存储库部分中反映的存储库高速缓存设置。 在某些情况下,您可能需要覆盖高速缓存设置值,以提高高速缓存命中数与高速缓存未命中数之比。 除非另行指出,否则 XML 配置文件中会启用所有高速缓存设置。

表 2。 存储库高速缓存设置
名称 设置与描述 要在 100Custom.xml 文件中添加或更新的设置

分支上下文高速缓存

branch-context-max-cache-size

此设置指定在“分支管理器”高速缓存中保留的分支上下文的最大数量,此高速缓存中包含有关内存中 Snapshot 内容的元数据,并且用于提高特定操作的性能。 缺省值为 64

该设置位于适用的 .00Static.xml 文件中,但是必须将该设置添加到 100Custom.xml 文件来更新该设置的缺省值。

如果流程应用程序特别大,并且 Business Automation Workflow 服务器中存在内存问题,那么可能需要减小设置的值,尤其是在为每个已部署的 Snapshot 创建新分支的运行时服务器上。 同样,对于内存受约束环境中的 Process Server,减小“分支管理器”高速缓存大小可减小大型流程应用程序的堆内存。 但是,如果编写的流程应用程序对于 Toolkit 具有大量依赖关系,那么您可能需要增加此设置的值。

具有一个业务对象的 Toolkit 用于分支高速缓存条目和 Snapshot 高速缓存的内存小于 1 MB。 Process Portal 应用程序使用大约 11 MB 内存。 系统数据 Toolkit 使用几百 MB 内存。 由于项目中工件之间的关系十分复杂以及每个项目中工件的数量,内存使用情况也千差万别。 因此,很难精确预测在调整分支高速缓存时将使用的其他内存量。

要计算在部署了多个流程应用程序的 Workflow Server 环境 上以牺牲内存为代价的速度的最佳值,一种方法是在数据库中获取表 LSW_BRANCH 的行计数,将此数乘以 1.1,然后将结果用作 branch-context-max-cache-size 设置的值。 此方法会假定所有流程应用程序使用均相对频繁,并且您需要其在内存中的上下文。 如果已部署单个流程应用程序,那么最佳值为此流程应用程序的依赖关系数加一。
注: 每当从 Workflow Server 环境部署或删除新的流程应用程序或 Snapshot 时,都需要考虑调整高速缓存大小。
<server>
   <repository>
     <snapshot-cache-size-per-branch merge="replace">128</snapshot-cache-size-per-branch>
   </repository>
</server>

Snapshot 上下文高速缓存

snapshot-cache-size-per-branch

此设置指定在 Workflow Center中为单个分支高速缓存的快照数。 缺省值为 64

Workflow Server 环境中,可以保留缺省值,因为在 Workflow Server上会忽略此设置。 每个已部署的 Snapshot 都会部署到 Workflow Server上的唯一分支,这意味着 Snapshot 高速缓存仅包含一个条目。

Snapshot 高速缓存独立于分支高速缓存进行调整。 每个分支高速缓存条目都包含一个 Snapshot 高速缓存。 在 Workflow Center中,分支上的所有 Snapshot 都使用相同的分支高速缓存条目; 因此, Snapshot 高速缓存中的条目数可能不止一个。 所需的条目数量取决于已访问的 Snapshot 的数量。 当激活快照时,或者当 Process Designer 用户在特定快照版本中查看工件和/或回放工件时,将访问快照。 因此,仅对 Workflow Center 服务器需要调整快照高速缓存大小。 是否需要调整 Snapshot 高速缓存取决于预计的使用模式。

Snapshot 高速缓存条目可能相当大,因为它们取决于应用程序内容。 Snapshot 高速缓存条目达到数百 MB 也并不罕见。 大小取决于给定 Snapshot 中工件的复杂性和数量。

对于非常大的项目和流程应用程序,减小 snapshot-cache-size-per-branch 设置的值可以降低堆内存需求(但由于更频繁的使用数据库而导致相应的性能下降)。

该设置位于适用的 00Static.xml 文件中,但是必须将该设置添加到 100Custom.xml 文件来更新该设置的缺省值。

<server>
   <repository>
     <snapshot-cache-size-per-branch merge="replace">128</snapshot-cache-size-per-branch>
   </repository>
</server>