更新内容片段以进行优化的 GraphQL 筛选 updating-content-fragments-for-optimized-graphql-filtering
要优化 GraphQL 筛选的性能,可运行一个程序来更新内容片段。
前提条件 prerequisites
此任务有以下前提条件:
-
确保您至少拥有 2023.1.0 版本的 AEM as a Cloud Service。
-
确保执行任务的用户具有所需的权限:
- 至少需要在 Cloud Manager 中的
Deployment Manager
角色。
- 至少需要在 Cloud Manager 中的
更新内容片段 updating-content-fragments
-
使用 Cloud Manager UI 为实例设置以下变量来启用更新:
可用变量包括:
table 0-row-8 1-row-8 2-row-8 3-row-8 4-row-8 5-row-8 名称 值 默认值 服务 已应用 类型 注释 1 CF_MIGRATION_ENABLED
1
0
所有 变量 Enables(!=0) 或 disables(0) 触发内容片段迁移作业。 2 CF_MIGRATION_ENFORCE
1
0
所有 变量 Enforce (!=0) 重新迁移内容片段。将此标志设置为 0 会执行 CF 的增量迁移。这意味着,如果作业因任意原因终止,则作业的下一次运行将从它终止的位置开始迁移。建议强制执行第一次迁移 (value=1)。 3 CF_MIGRATION_BATCH
50
50
所有 变量 用于在迁移后保存内容片段数量的批次大小。这与在一个批次中保存到存储库的 CF 数量有关,并且可以用于优化对存储库的写入次数。 4 CF_MIGRATION_LIMIT
1000
1000
所有 变量 一次处理的内容片段的最大数目。请参阅有关 CF_MIGRATION_INTERVAL
的发行说明。5 CF_MIGRATION_INTERVAL
60
600
所有 变量 处理剩余内容片段直到下一个限制的间隔(秒)。该间隔也被视为开始作业之前的等待时间,以及处理每个后续 CF_MIGRATION_LIMIT 个 CF 之间的延迟。(*) note note NOTE (*) CF_MIGRATION_INTERVAL
的值还可以帮助估算迁移作业的总执行时间。例如: - 内容片段总数 = 20,000
- CF_MIGRATION_LIMIT = 1000
- CF_MIGRATION_INTERNAL = 60(秒)
- 完成迁移大约所需的时间 = 60 + (20,000/1000 * 60) = 1260 秒 = 21 分钟
在开始时增加的额外“60”秒是因开始作业时的初始延迟导致的。
这只是完成作业所需的 最少 时间,并且不包括 I/O 时间。实际花费的时间可能超过此估计值。 -
监控更新的进度和完成情况。
为此,请从以下位置监控有关 author 和 golden-publish 的日志:
-
com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob
-
Author 日志;例如:
code language-shell 23.01.2023 13:13:45.926 *INFO* [sling-threadpool-09cbdb47-4d99-4c4c-b6d5-781b635ee21b-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob This instance<dd9ffdc1-0c28-4d04-9a96-5d4d223e457e> is the leader, will schedule the upgrade schedule job. ... 23.01.2023 13:13:45.941 *INFO* [sling-threadpool-09cbdb47-4d99-4c4c-b6d5-781b635ee21b-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Scheduling content fragments upgrade from version 0 to 1, slingJobId: 2023/1/23/13/13/50e1a575-4cd7-497b-adf0-62cb5768eedb_0, enforce: true, limit: 1000, batch: 50, interval: 60s 23.01.2023 13:20:40.960 *INFO* [sling-threadpool-09cbdb47-4d99-4c4c-b6d5-781b635ee21b-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Finished content fragments upgrade in 6m, slingJobId: 2023/1/23/13/13/50e1a575-4cd7-497b-adf0-62cb5768eedb_0, status: MaintenanceJobStatus{jobState=SUCCEEDED, statusMessage='Upgrade to version '1' succeeded.', errors=[], successCount=3781, failedCount=0, skippedCount=0}
-
Golden-publish 日志;例如:
code language-shell 23.01.2023 12:35:05.150 *INFO* [sling-threadpool-8abcc1bb-cdcb-46d4-8565-942ad8a73209-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob This instance<ad1b399e-77be-408e-bc3f-57097498fddb> is the leader, will schedule the upgrade schedule job. 23.01.2023 12:35:05.161 *INFO* [sling-threadpool-8abcc1bb-cdcb-46d4-8565-942ad8a73209-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Scheduling content fragments upgrade from version 0 to 1, slingJobId: 2023/1/23/12/34/ad1b399e-77be-408e-bc3f-57097498fddb_0, enforce: true, limit: 1000, batch: 50, interval: 60s ... 23.01.2023 12:40:45.180 *INFO* [sling-threadpool-8abcc1bb-cdcb-46d4-8565-942ad8a73209-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Finished content fragments upgrade in 5m, slingJobId: 2023/1/23/12/34/ad1b399e-77be-408e-bc3f-57097498fddb_0, status: MaintenanceJobStatus{jobState=SUCCEEDED, statusMessage='Upgrade to version '1' succeeded.', errors=[], successCount=3781, failedCount=0, skippedCount=0}
-
使用 Splunk 启用对环境日志的访问的客户可以使用下面的示例查询来监控升级过程。有关启用 Splunk 记录的详细信息,请参阅调试生产和阶段。
code language-splunk index=<indexName> sourcetype=aemerror aem_envId=<environmentId> msg="*com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Finished*" (aem_tier=golden-publish OR aem_tier=author) | table _time aem_tier pod_name msg | sort -_time desc
其中:
environmentId
- 客户环境标识符;例如,e1234
indexName
- 客户索引名称,收集aemerror
事件
输出示例:
table 0-row-4 1-row-4 2-row-4 layout-auto _次 aem_tier pod_name msg 2023-04-21 06:00:35.723 作者 cm-p1234-e1234-aem-author-76d6dc4b79-8lsb5 [sling-threadpool-bb5da4dd-6b05-4230-93ea-1d5cd242e24f-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Finished content fragments upgrade in 391m, slingJobId: 2023/4/20/23/16/db7963df-e267-489b-b69a-5930b0dadb37_0, status: MaintenanceJobStatus{jobState=SUCCEEDED, statusMessage='Upgrade to version '1' succeeded.', errors=[], successCount=36756, failedCount=0, skippedCount=0} 2023-04-21 06:05:48.207 golden-publish cm-p1234-e1234-aem-golden-publish-644487c9c5-lvkv2 [sling-threadpool-284b9a9a-8454-461e-9bdb-44866c6ddfb1-(apache-sling-job-thread-pool)-1-Content Fragment Upgrade Job Queue Config(cfm/upgrader)] com.adobe.cq.dam.cfm.impl.upgrade.UpgradeJob Finished content fragments upgrade in 211m, slingJobId: 2023/4/20/23/15/66c1690a-cdb7-4e66-bc52-90f33394ddfc_0, status: MaintenanceJobStatus{jobState=SUCCEEDED, statusMessage='Upgrade to version '1' succeeded.', errors=[], successCount=19557, failedCount=0, skippedCount=0} -
-
禁用更新程序。
note important IMPORTANT 需要执行此步骤才能完成升级。 更新程序运行后,将云环境变量
CF_MIGRATION_ENABLED
重置为“0”以触发所有 pod 的回收。 -
table html-authored no-header table 0-row-8 1-row-8 名称 值 默认值 服务 已应用 类型 注释 CF_MIGRATION_ENABLED
0
0
所有 变量 Disables(0)(或 Enables(!=0))触发内容片段迁移作业。 note note NOTE 这对于发布层很重要,因为内容更新仅在 golden-publish 上进行,并且在回收 pod 时,所有正常的发布 pod 都基于 golden-publish。 验证更新程序的完成情况。
您可以使用 Cloud Manager Developer Console 中的存储库浏览器来检查内容片段数据,从而验证更新的成功完成情况。
-
在第一次完整迁移之前,
cfGlobalVersion
属性将不存在。
因此,JCR 节点/content/dam
上此属性的值为1
,确认迁移完成情况。 -
您也可以检查单个内容片段的以下属性:
_strucVersion
的值应为1
indexedData
结构必须存在
note note NOTE 该过程更新创作实例和发布实例上的内容片段。 因此,Adobe 建议您通过存储库浏览器 至少 为一个创作实例 和 一个发布实例执行验证。
-
限制 limitations
请注意以下限制:
-
只能在完全更新所有内容片段(由 JCR 节点
/content/dam
的cfGlobalVersion
属性指示)后,才能优化 GraphQL 筛选器的性能 -
如果在运行更新过程后从包导入了内容片段(使用
crx/de
),则直到再次运行更新过程后,才会在 GraphQL 查询结果中再次考虑这些内容片段。