Adobe Experience Manager Assets性能优化指南 assets-performance-tuning-guide

Experience Manager Assets安装程序包含多个硬件、软件和网络组件。 根据您的部署方案,可能需要对硬件、软件和网络组件进行特定的配置更改以消除性能瓶颈。

此外,确定并遵守某些硬件和软件优化准则有助于奠定坚实的基础,使您的Experience Manager Assets部署能够满足有关性能、可扩展性和可靠性的期望。

Experience Manager Assets中的性能不佳可能会影响用户关于交互性能、资产处理、下载速度和其他方面的体验。

事实上,在为任何项目建立目标指标之前,您必须先执行性能优化这项基本任务。

下面是一些关键重点领域,在这些领域中,您可以发现并修复性能问题,以免它们对用户造成影响。

Platform platform

虽然Experience Manager在多个平台上都有支持,但Adobe发现对Linux和Windows上的本机工具支持度最高,这有助于实现最佳性能和易用性。 理想情况下,您应该部署64位操作系统以满足Experience Manager Assets部署的高内存要求。 与任何Experience Manager部署一样,您应尽可能实施TarMK。 虽然TarMK不能扩展至超过单个创作实例,但发现其性能优于MongoMK。 您可以添加TarMK卸载实例以提高Experience Manager Assets部署的工作流处理能力。

临时文件夹 temp-folder

要缩短资产上传时间,请为Java临时目录使用高性能存储。 在Linux和Windows上,可以使用RAM驱动器或固态硬盘。 在基于云的环境中,可以使用等效的高速存储类型。 例如,在Amazon EC2中,临时驱动器可用于临时文件夹。

假定服务器具有足够的内存,请配置RAM驱动器。 在Linux上,运行以下命令以创建8 GB RAM驱动器:

mkfs -q /dev/ram1 800000
 mkdir -p /mnt/aem-tmp
 mount /dev/ram1 /mnt/aem-tmp
 df -H | grep aem-tmp

在Windows操作系统上,使用第三方驱动程序创建RAM驱动器,或者只使用高性能存储(如SSD)。

高性能临时卷就绪后,设置JVM参数-Djava.io.tmpdir。 例如,可以将下面的JVM参数添加到Experience Manager的bin/start脚本中的CQ_JVM_OPTS变量:

-Djava.io.tmpdir=/mnt/aem-tmp

Java配置 java-configuration

Java版本 java-version

Adobe建议在Java 8上部署Experience Manager Assets以获得最佳性能。

JVM参数 jvm-parameters

设置以下JVM参数:

  • -XX:+UseConcMarkSweepGC
  • -Doak.queryLimitInMemory=500000
  • -Doak.queryLimitReads=100000
  • -Dupdate.limit=250000
  • -Doak.fastQuerySize=true

数据存储和内存配置 data-store-and-memory-configuration

文件数据存储配置 file-data-store-configuration

建议所有Experience Manager Assets用户将数据存储与区段存储分开。 此外,配置maxCachedBinarySizecacheSizeInMB参数可以帮助最大化性能。 将maxCachedBinarySize设置为缓存中可容纳的最小文件大小。 指定用于cacheSizeInMB内数据存储的内存中缓存的大小。 Adobe建议将此值设置为栈总大小的2-10%。 但是,负载/性能测试可以帮助确定理想的设置。

配置缓冲图像缓存的最大大小 configure-the-maximum-size-of-the-buffered-image-cache

将大量资产上传到Adobe Experience Manager时,为允许内存消耗意外达到峰值,并防止JVM因OutOfMemoryErrors而失败,请减小缓冲图像缓存的最大配置大小。 例如,您的系统最大栈(- Xmxparam)为5 GB,Oak BlobCache设置为1 GB,文档缓存设置为2 GB。 在这种情况下,缓冲缓存将占用最大1.25 GB和内存,这样将仅留下0.75 GB内存用于意外峰值。

在OSGi Web控制台中配置缓冲缓存大小。 在https://host:port/system/console/configMgr/com.day.cq.dam.core.impl.cache.CQBufferedImageCache,以字节为单位设置属性cq.dam.image.cache.max.memory。 例如,1073741824为1 GB(1024 x 1024 x 1024 = 1 GB)。

从Experience Manager6.1 SP1开始,如果您使用sling:osgiConfig节点配置此属性,请确保将数据类型设置为“长”。 有关更多详细信息,请参阅CQBufferedImageCache在资源上传期间使用栈

共享的数据存储 shared-data-stores

在大规模实施中,实施S3或共享文件数据存储区有助于节省磁盘空间并提高网络吞吐量。 有关使用共享数据存储的利弊的更多信息,请参阅Assets大小调整指南

S3数据存储 s-data-store

以下S3数据存储配置(org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.cfg)帮助Adobe将12.8 TB的二进制大对象(BLOB)从现有文件数据存储提取到客户站点的S3数据存储中:

accessKey=<snip>
 secretKey=<snip>
 s3Bucket=<snip>
 s3Region=us-standard
 s3EndPoint=<a href="https://s3.amazonaws.com/">s3.amazonaws.com</a>
 connectionTimeout=120000
 socketTimeout=120000
 maxConnections=80
 writeThreads=60
 concurrentUploadsThreads=30
 asyncUploadLimit=30
 maxErrorRetry=1000
 path=/opt/author/crx-quickstart/repository/datastore
 s3RenameKeys=false
 s3Encryption=SSE_S3
 proactiveCaching=true
 uploadRetries=1000
 migrateFailuresCount=400

网络优化 network-optimization

Adobe建议启用HTTPS,因为许多公司都有会侦听HTTP流量的防火墙,这会给上载和损坏文件带来不利影响。 对于大型文件上传,请确保用户与网络有有线连接,因为WiFi网络会快速饱和。 有关识别网络瓶颈的指南,请参阅Assets大小调整指南。 若要通过分析网络拓扑评估网络性能,请参阅Assets网络注意事项

您的网络优化策略主要取决于Experience Manager实例的可用带宽量和负载。 常用配置选项(包括防火墙或代理)有助于提高网络性能。 请牢记以下要点:

  • 根据您的实例类型(小、中、大),请确保您有足够的网络带宽来支持Experience Manager实例。 如果Experience Manager托管在AWS上,则充足的带宽分配尤其重要。
  • 如果您的Experience Manager实例托管在AWS上,则可以通过使用通用缩放策略受益。 如果用户期望高负载,请放大实例。 在中/低负载时将其缩小。
  • HTTPS:大多数用户都设有拦截HTTP流量的防火墙,这可能会在上传操作期间对文件上传产生不利影响,甚至导致文件损坏。
  • 大文件上传:确保用户有有线网络连接(WiFi连接快速饱和)。

工作流 workflows

瞬态工作流 transient-workflows

请尽可能将DAM更新资产工作流设置为“临时”。 该设置显着减少了处理工作流所需的开销,因为在这种情况下,工作流不需要经过正常的跟踪和存档过程。

  1. https://[aem_server]:[port]/miscadmin处的Experience Manager部署中导航到/miscadmin

  2. 展开​ 工具 > 工作流 > 模型 > dam

  3. 打开​ DAM更新资产。 从浮动工具面板切换到​ 页面 ​选项卡,然后单击​ 页面属性

  4. 选择​ 临时工作流,然后单击​ 确定

    note note
    NOTE
    某些功能不支持临时工作流。 如果Assets部署需要这些功能,请勿配置临时工作流。

如果无法使用临时工作流,请定期运行工作流清除以删除存档的DAM更新资产工作流,以确保系统性能不会降低。

通常,每周执行清除工作流。 但是,在资源密集型场景中(如在大规模资产摄取期间),您可以更频繁地执行该操作。

要配置工作流清除,请通过OSGi控制台添加新的AdobeGranite工作流清除配置。 接下来,在每周维护时段中配置和计划工作流。

如果清除时间过长,则会超时。 因此,您应确保清除作业完成,以避免由于工作流数量过多而导致清除工作流无法完成的情况。

例如,在执行大量非临时工作流(创建工作流实例节点)之后,您可以临时执行ACS AEM Commons Workflow Remover。 它立即删除多余的已完成的工作流实例,而不是等待AdobeGranite工作流清除计划程序运行。

最大并行作业数 maximum-parallel-jobs

默认情况下,Experience Manager运行的最大并行作业数等于服务器上的处理器数。 此设置的问题在于,在负载较重期间,所有处理器都被DAM更新资产工作流占用,从而减慢UI响应并阻止Experience Manager运行其他可保护服务器性能和稳定性的进程。 最好通过执行以下步骤,将此值设置为服务器上可用处理器的一半:

  1. 在Experience Manager作者中,访问https://[aem_server]:[port]/system/console/slingevent

  2. 单击与您的实施相关的每个工作流队列上的​ 编辑,例如​ Granite Transient Workflow队列

  3. 更新​ 最大并行作业 ​的值,然后单击​ 保存

首先,将队列设置为一半可用处理器是一种可行的解决方案。 但是,您可能必须增加或减少此数量才能达到最大吞吐量,并根据环境对其进行调整。 临时和非临时工作流以及其他进程(如外部工作流)有单独的队列。 如果多个队列设置为50%的处理器同时处于活动状态,则系统可能会快速过载。 在用户实施中,大量使用的队列差异很大。 因此,您可能必须仔细配置这些服务器才能在不牺牲服务器稳定性的情况下实现最高效率。

DAM更新资产配置 dam-update-asset-configuration

DAM更新资产工作流包含为任务配置的整套步骤,例如Dynamic Media PTIFF生成和Adobe InDesign Server集成。 但是,大多数用户可能不需要执行其中的多个步骤。 Adobe建议您创建DAM更新资产工作流模型的自定义副本,并删除任何不必要的步骤。 在这种情况下,请更新DAM更新资产的启动器,以指向新模型。

集中运行DAM更新资产工作流可能会急剧增加文件数据存储的大小。 Adobe的实验结果表明,如果在8小时内执行约5500个工作流,则数据存储大小可以增加约400 GB。

这是临时增加,运行数据存储垃圾收集任务后,数据存储将恢复到其原始大小。

通常,数据存储垃圾收集任务与其他计划的维护任务一起每周运行。

如果磁盘空间有限并且集中运行DAM更新资产工作流,请考虑更频繁地计划垃圾收集任务。

运行时呈现版本 runtime-rendition-generation

客户在其网站中使用各种大小和格式的图像,或将其分发给业务合作伙伴。 由于每个演绎版都会增加资源在存储库中的占用空间,因此Adobe建议谨慎使用此功能。 要减少处理和存储图像所需的资源量,您可以在运行时生成这些图像,而不是在摄取期间生成为演绎版。

许多Sites客户都实施一个图像servlet,该图像服务可在请求图像时调整其大小和裁剪图像,这会对发布实例施加额外的负载。 但是,只要可以缓存这些图像,就可以缓解挑战。

另一种方法是使用Dynamic Media技术完全放弃图像操作。 此外,您可以部署的Brand Portal不仅承担来自Experience Manager基础结构的演绎版生成责任,而且承担整个发布层的责任。

ImageMagick imagemagick

如果您自定义DAM更新资产工作流以使用ImageMagick生成演绎版,Adobe建议您修改位于/etc/ImageMagick/policy.xml文件。 默认情况下,ImageMagick使用OS卷上的全部可用磁盘空间和可用内存。 在policy.xmlpolicymap部分中进行以下配置更改以限制这些资源。

<policymap>
  <!-- <policy domain="system" name="precision" value="6"/> -->
  <policy domain="resource" name="temporary-path" value="/ephemeral0/imagemagick_tmp"/>
  <policy domain="resource" name="memory" value="1000MiB"/>
  <policy domain="resource" name="map" value="1000MiB"/>
  <!-- <policy domain="resource" name="area" value="1gb"/> -->
  <policy domain="resource" name="disk" value="10000MiB"/>
  <!-- <policy domain="resource" name="file" value="768"/> -->
  <policy domain="resource" name="thread" value="1"/>
  <policy domain="resource" name="throttle" value="50"/>
  <!-- <policy domain="resource" name="time" value="3600"/> -->
</policymap>

此外,将configure.xml文件中ImageMagick的临时文件夹的路径(或通过设置环境变量MAGICK_TEMPORARY_PATH)设置为具有足够空间和IOPS的磁盘分区。

CAUTION
如果ImageMagick使用所有可用磁盘空间,错误配置可能会使服务器不稳定。 使用ImageMagick处理大型文件所需的策略更改可能会影响Experience Manager性能。 有关详细信息,请参阅安装和配置ImageMagick
NOTE
ImageMagick policy.xmlconfigure.xml文件在/usr/lib64/ImageMagick-*/config/而不是/etc/ImageMagick/上可用。有关配置文件的位置,请参阅ImageMagick文档

如果您在AdobeManaged Services (AMS)上使用Experience Manager,如果您计划处理大量大型PSD或PSB文件,请联系Adobe客户支持。 与Adobe客户支持代表合作,为您的AMS部署实施这些最佳实践,并为Adobe的专有格式选择最佳工具和模型。 Experience Manager不能处理超过30000 x 23000像素的超高分辨率PSB文件。

XMP写回 xmp-writeback

每当在Experience Manager中修改元数据时,XMP写回都会更新原始资源,这会导致以下情况:

  • 资源本身已修改
  • 将创建资源的版本
  • DAM更新资产已针对该资产运行

列出的结果消耗了相当多的资源。 因此,如果不需要回写,Adobe建议禁用XMP。 有关详细信息,请参阅XMP写回

如果选中运行工作流标志,则导入大量元数据可能会导致资源密集型XMP写回活动。 在使用精益服务器期间规划此类导入,以便不影响其他用户的性能。

复制 replication

将资源复制到大量发布实例(例如,在Sites实施中)时,Adobe建议您使用链复制。 在这种情况下,创作实例将复制到单个发布实例,然后复制到其他发布实例,从而释放创作实例。

配置链复制 configure-chain-replication

  1. 选择要用于链接复制的发布实例
  2. 在该发布实例上添加指向其他发布实例的复制代理
  3. 在每个复制代理上,在“触发器”选项卡上启用“接收时”
NOTE
Adobe不建议自动激活资源。 但是,如有必要,Adobe建议将此作为工作流中的最后一个步骤,通常是DAM更新资产。

搜索索引 search-indexes

安装最新的Service Pack和与性能相关的修补程序,因为这些程序通常包括系统索引更新。 有关某些索引优化,请参阅性能优化提示

为经常运行的查询创建自定义索引。 有关详细信息,请参阅用于分析慢查询的方法自定义索引。 有关查询和索引最佳实践的其他见解,请参阅查询和索引最佳实践

Lucene索引配置 lucene-index-configurations

可以对Oak索引配置进行一些优化,以帮助提高Experience Manager Assets性能。 更新索引配置以缩短重新索引时间:

  1. 打开CRXDe /crx/de/index.jsp并以管理用户身份登录。
  2. 浏览到/oak:index/lucene
  3. 添加值为/var/etc/workflow/instances/etc/replicationString[]属性excludedPaths
  4. 浏览到/oak:index/damAssetLucene。 添加值为/content/damString[]属性includedPaths。 保存更改。

如果您的用户不需要对资源进行全文搜索,例如搜索PDF文档中的文本,然后禁用它。 您可以通过禁用全文索引来提高索引性能。 要禁用Apache Lucene文本提取,请执行以下步骤:

  1. 在Experience Manager界面中,访问包管理器。
  2. 上载并安装位于disable_indexingbinarytextextraction-10.zip的包。

猜测总数 guess-total

在创建可生成大型结果集的查询时,请使用guessTotal参数以避免在运行这些查询时占用大量内存。

已知问题 known-issues

大文件 large-files

存在与Experience Manager中的大文件相关的两个主要已知问题。 当文件大小大于2 GB时,冷备用同步可能会出现内存不足的情况。 在某些情况下,它会阻止备用同步运行。 在其他情况下,它会导致主实例崩溃。 此方案适用于Experience Manager中大于2GB的任何文件,包括内容包。

同样,当文件在使用共享S3数据存储时达到2 GB时,可能需要一些时间才能将文件从缓存完全保存到文件系统。 因此,在使用无二进制复制时,可能会在复制完成之前未保留二进制数据。 这种情况可能导致问题,特别是在数据可用性很重要的情况下。

性能测试 performance-testing

对于每个Experience Manager部署,建立一个可以快速发现并解决瓶颈的性能测试机制。 以下是需要重点关注的一些关键领域。

网络测试 network-testing

对于客户的所有网络性能问题,请执行以下任务:

  • 测试客户网络中的网络性能
  • 在Adobe网络中测试网络性能。 对于AMS客户,请与您的CSE合作,从Adobe网络中进行测试。
  • 从另一个接入点测试网络性能
  • 使用网络基准测试工具
  • 针对Dispatcher进行测试

Experience Manager部署测试 aem-deployment-testing

要通过高效的CPU利用率和负载共享将延迟降至最低并实现高吞吐量,请定期监控Experience Manager部署的性能。 特别是:

  • 针对Experience Manager部署运行负载测试。
  • 监控上传性能和UI响应性。

Experience Manager Assets性能核对清单和资产管理任务的影响 checklist

  • 启用HTTPS以绕过任何公司HTTP流量探查器。
  • 使用有线连接上传大量资产。
  • 在Java 8上部署。
  • 设置最佳JVM参数。
  • 配置文件系统数据存储或S3数据存储。
  • 禁用子资源生成。 如果启用,AEM工作流将为多页面资源中的每个页面创建单独的资源。 其中每个页面都是单独的资产,会占用额外的磁盘空间,需要进行版本控制和额外的工作流处理。 如果您不需要单独的页面,请禁用子资产生成和页面提取活动。
  • 启用临时工作流。
  • 调整Granite工作流队列以限制并发作业。
  • 配置ImageMagick以限制资源消耗。
  • 从DAM更新资产工作流中删除不必要的步骤。
  • 配置工作流和版本清除。
  • 使用最新的Service Pack和修补程序优化索引。 请联系Adobe客户支持,了解可能提供的任何其他索引优化。
  • 使用guessTotal优化查询性能。
  • 如果将Experience Manager配置为从文件内容中检测文件类型(通过在​ AEM Web Console ​中启用​ Day CQ DAM Mime Type Service),请在非高峰时间批量上传许多文件,因为它占用大量资源。
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2