本页提供了有关如何优化AEM部署性能的一般准则。 如果您是AEM的新用户,请在开始阅读性能指南之前查看以下页面:
以下说明了AEM可用的部署选项(滚动查看所有选项):
AEM 产品 |
拓扑 |
操作系统 |
应用程序服务器 |
JRE |
安全性 |
微内核 |
数据存储 |
索引 |
Web 服务器 |
浏览器 |
Experience Cloud |
Sites |
非HA |
Windows |
CQSE |
oracle |
LDAP |
Tar |
市场细分 |
属性 |
Apache |
Edge |
目标 |
Assets |
Publish-HA |
Solaris™ |
WebLogic |
IBM® |
SAML |
MongoDB |
文件 |
Lucene |
IIS |
IE |
分析 |
社区 |
Author-CS |
Red Hat® |
WebSphere® |
HP |
Oauth |
RDB/Oracle |
S3/Azure |
Solr |
iPlanet |
FireFox |
营销活动 |
Forms |
创作 — 卸载 |
HP-UX |
Tomcat |
|
|
RDB/DB2 |
MongoDB |
|
|
铬黄 |
Social |
移动设备 |
Author-Cluster |
IBM® AIX® |
JBoss® |
|
|
RDB/MySQL |
RDBMS |
|
|
Safari |
受众 |
多站点 |
ASRP |
SUSE® |
|
|
|
RDB/SQLServer |
|
|
|
|
Assets |
商务 |
MSRP |
Apple操作系统 |
|
|
|
|
|
|
|
|
激活 |
Dynamic Media |
JSRP |
|
|
|
|
|
|
|
|
|
移动设备 |
Brand Portal |
J2E |
|
|
|
|
|
|
|
|
|
|
AoD |
|
|
|
|
|
|
|
|
|
|
|
LiveFyre |
|
|
|
|
|
|
|
|
|
|
|
Screens |
|
|
|
|
|
|
|
|
|
|
|
文档安全 |
|
|
|
|
|
|
|
|
|
|
|
进程管理 |
|
|
|
|
|
|
|
|
|
|
|
桌面应用程序 |
|
|
|
|
|
|
|
|
|
|
|
性能准则主要适用于AEM Sites。
在以下情况下使用性能准则:
本章概述AEM架构及其最重要的组件。 它还提供了开发准则,并描述了TarMK和MongoMK基准测试中使用的测试场景。
AEM平台包含以下组件:
有关AEM平台的更多信息,请参阅 什么是AEM.
AEM部署有三个重要的构建块。 此 创作实例 内容作者、编辑者和批准者用于创建和审阅内容。 内容获得批准后,将发布到名为的第二个实例类型。 发布实例 从最终用户访问的位置。 第三个构建基块是 调度程序 这是一个处理缓存和URL过滤的模块,安装在Web服务器上。 有关AEM架构的其他信息,请参阅 典型部署方案.
微内核在AEM中充当持久性管理器。 AEM使用三种类型的微内核:TarMK、MongoDB和关系数据库(受限制支持)。 根据您的需要选择一种部署类型,具体取决于实例的用途和您考虑的部署类型。 有关微型内核的其他信息,请参见 建议的部署 页面。
在AEM中,可以独立于内容节点存储二进制数据。 存储二进制数据的位置称为 数据存储,而内容节点和属性的位置称为 节点存储.
Adobe建议将TarMK作为客户用于AEM创作实例和发布实例的默认持久性技术。
关系数据库微内核的支持受到限制。 联系人 Adobe客户关怀 使用此类微内核之前。
在处理大量二进制文件时,建议您使用外部数据存储而不是默认节点存储来最大化性能。 例如,如果您的项目需要许多媒体资产,将它们存储在File或Azure/S3数据存储区下,那么与直接将这些资产存储在MongoDB中相比,访问这些资产会更快。
有关可用配置选项的更多详细信息,请参阅 配置节点和数据存储.
Adobe建议您选择使用Adobe Managed Services在Azure或Amazon Web Services (AWS)上部署AEM的选项。 客户将受益于具有在这些云计算环境中部署和操作AEM的经验和技能的团队。 参见 有关Adobe Managed Services的其他文档.
有关如何在Adobe Managed Services之外的Azure或AWS上部署AEM的建议,Adobe建议直接与云提供商合作。 或者,与支持在您选择的云环境中部署AEM的Adobe合作伙伴之一合作。 选定的云提供商或合作伙伴负责其支持的架构的规模规格、设计和实施,以满足您的特定性能、负载、可扩展性和安全性要求。
另请参阅 技术要求 页面。
本节中列出了与AEM一起使用的自定义索引提供程序。 要了解有关索引的更多信息,请参阅 Oak查询和索引.
对于大多数部署,Adobe建议使用Lucene索引。 在专业化和复杂的部署中,仅使用Solr实现可扩展性。
针对AEM定位进行开发 性能和可扩展性. 以下是您可以遵循的最佳实践:
DO
不要
如果可以,请不要直接使用JCR API
请勿更改/libs,而是使用叠加
尽量不要使用查询
请勿使用Sling绑定在Java™代码中获取OSGi服务,而是使用:
有关在AEM上进行开发的更多详细信息,请阅读 开发 — 基础知识. 有关其他最佳实践,请参阅 开发最佳实践.
此页面上显示的所有基准测试均已在实验室环境中执行。
下面详述的测试场景用于TarMK、MongoMk和TarMK与MongoMk章节的基准部分。 要查看哪个场景用于特定基准测试,请阅读中的场景字段 技术规范 表格。
单个产品方案
AEM Assets:
混合产品方案
AEM Sites +资产:
垂直用例方案
媒体:
Read Article Page (27.4%), Read Page (10.9%), Create Session (2.6%), Activate Content Page (1.7%), Create Content Page (0.4%), Create Paragraph (4.3%), Edit Paragraph (0.9%), Image Component (0.9%), Browse Assets (20%), Read Asset Metadata (8.5%), Download Asset (4.2%), Search Asset (0.2%), Update Asset Metadata (2.4%), Upload Asset (1.2%), Browse Project (4.9%), Read Project (6.6%), Project Add Asset (1.2%), Project Add Site (1.2%), Create Project (0.1%), Author Search (0.4%)
本章提供了TarMK的一般性能准则,用于指定最低架构要求和设置配置。 此外,还提供了基准测试,以进一步说明问题。
Adobe建议将TarMK作为客户在所有部署场景中使用的默认持久性技术,适用于AEM创作实例和发布实例。
有关TarMK的更多信息,请参阅 部署方案 和 Tar存储.
下面介绍的最低架构准则适用于生产环境和高流量站点。 这些准则包括 非 此 最低规范 运行AEM。
要在使用TarMK时建立良好的性能,您应该从以下架构开始:
以下说明了AEM sites和AEM Assets的架构准则。
应关闭无二进制复制 日期 如果文件数据存储区已共享,则是。
适用于AEM Sites的Tar架构准则
适用于AEM Assets的Tar架构准则
要获得良好的性能,您应该遵循下面提供的设置准则。 有关如何更改设置的说明, 查看此页面.
设置 | 参数 | 价值 | 描述 |
Sling作业队列 | queue.maxparallel |
将值设置为CPU核心数量的一半。 | 默认情况下,每个作业队列的并发线程数等于CPU核心数。 |
Granite Transient工作流队列 | Max Parallel |
将值设置为CPU核心数量的一半 | |
JVM参数 |
|
500000 100000 250000 True |
要防止扩展查询使系统过载,请在AEM启动脚本中添加这些JVM参数。 |
Lucene索引配置 |
|
启用 启用 启用 |
有关可用参数的更多详细信息,请参阅 此页面. |
数据存储= S3数据存储 |
|
1048576 (1 MB)或更小 最大栈大小的2-10% |
另请参阅 数据存储配置. |
DAM更新资产工作流 | Transient Workflow |
已选中 | 此工作流用于管理资产的更新. |
DAM元数据写回 | Transient Workflow |
已选中 | 此工作流用于管理XMP对原始二进制文件的回写,并设置JCR中的上次修改日期。 |
基准测试按以下规范执行:
作者节点 | |
---|---|
服务器 | 裸机硬件(HP) |
操作系统 | Red Hat® Linux® |
CPU/内核 | 英特尔®至强® CPU E5-2407 @2.40GHz,8核 |
RAM | 32 GB |
磁盘 | 磁性 |
Java™ | oracleJRE版本8 |
JVM栈 | 16 GB |
产品 | AEM 6.2 |
Nodestore | TarMK |
数据存储 | 文件DS |
方案 | 单个产品:资产/30个并发线程 |
下面显示的数字已标准化为1作为基线,而不是实际的吞吐量数字。
与TarMK相比,选择MongoMK持久性后端的主要原因是要水平缩放实例。 此功能意味着始终运行两个或多个活动的创作实例,并使用MongoDB作为持久性存储系统。 运行多个创作实例的需要通常是由于单个服务器的CPU和内存容量(支持所有并发创作活动)不再可持续。
有关TarMK的更多信息,请参阅 部署方案 和 Mongo存储.
要在使用MongoMK时建立良好的性能,您应该从以下架构开始:
在生产环境中, MongoDB始终用作具有主副本集和两个辅助副本集的副本集。 读取和写入操作会转到主数据库,而读取操作则可以转到辅助数据库。 如果存储不可用,可以使用仲裁器替换其中一个辅助实例,但MongoDB副本集必须始终由奇数实例组成。
应关闭无二进制复制 日期 如果文件数据存储区已共享,则是。
要获得良好的性能,您应该遵循下面提供的设置准则。 有关如何更改设置的说明, 查看此页面.
设置 | 参数 | 值(默认) | 描述 |
Sling作业队列 | queue.maxparallel |
将值设置为CPU核心数量的一半。 | 默认情况下,每个作业队列的并发线程数等于CPU核心数。 |
Granite Transient工作流队列 | Max Parallel |
将值设置为CPU核心数量的一半。 | |
JVM参数 |
|
500000 100000 250000 True 60000 |
要防止扩展查询使系统过载,请在AEM启动脚本中添加这些JVM参数。 |
Lucene索引配置 |
|
启用 启用 启用 |
有关可用参数的更多详细信息,请参阅 此页面. |
数据存储= S3数据存储 |
|
1048576 (1 MB)或更小 最大栈大小的2-10% |
另请参阅 数据存储配置. |
DocumentNodeStoreService |
|
2048 35 (25) 20 (10) 30 (5) 10 (3) 4 (4) 。/cache,size=2048,binary=0,-compact,-compress |
缓存的默认大小设置为256 MB。 会影响执行缓存失效所需的时间。 |
oak-observation |
|
最小值和最大值= 20 50000 |
基准测试按以下规范执行:
作者节点 | MongoDB节点 | |
---|---|---|
服务器 | 裸机硬件(HP) | 裸机硬件(HP) |
操作系统 | Red Hat® Linux® | Red Hat® Linux® |
CPU/内核 | 英特尔®至强® CPU E5-2407 @2.40GHz,8核 | 英特尔®至强® CPU E5-2407 @2.40GHz,8核 |
RAM | 32 GB | 32 GB |
磁盘 | 磁性 — 1k IOPS以上 | 磁性 — 1k IOPS以上 |
Java™ | oracleJRE版本8 | 不适用 |
JVM栈 | 16 GB | 不适用 |
产品 | AEM 6.2 | MongoDB 3.2 WiredTiger |
Nodestore | MongoMK | 不适用 |
数据存储 | 文件DS | 不适用 |
方案 | 单个产品:资产/30个并发线程 | 单个产品:资产/30个并发线程 |
下面显示的数字已标准化为1作为基线,而不是实际的吞吐量数字。
在两者之间进行选择时,需要考虑的基本规则是TarMK是针对性能而设计的,而MongoMK则是用于可扩展性。 Adobe建议将TarMK作为客户在所有部署场景中使用的默认持久性技术,适用于AEM创作实例和发布实例。
与TarMK相比,选择MongoMK持久性后端的主要原因是要水平缩放实例。 此功能意味着始终运行两个或多个活动的创作实例,并使用MongoDB作为持久性存储系统。 运行多个创作实例的需要通常是由于单个服务器的CPU和内存容量(支持所有并发创作活动)不再可持续。
有关TarMK与MongoMK的更多详细信息,请参阅 建议的部署.
TarMK的优势
选择MongoMK的标准
下面显示的数字已标准化为1作为基线,而不是实际的吞吐量数字。
创作OAK节点 | MongoDB节点 | ||
服务器 | 裸机硬件(HP) | 裸机硬件(HP) | |
操作系统 | Red Hat® Linux® | Red Hat® Linux® | |
CPU/内核 | 英特尔(R)至强(R) CPU E5-2407 @2.40GHz,8核 | 英特尔(R)至强(R) CPU E5-2407 @2.40GHz,8核 | |
RAM | 32 GB | 32 GB | |
磁盘 | 磁性 — 1k IOPS以上 | 磁性 — 1k IOPS以上 | |
Java™ | oracleJRE版本8 | 不适用 | |
JVM栈16GB | 16 GB | 不适用 | |
产品 | AEM 6.2 | MongoDB 3.2 WiredTiger | |
Nodestore | TarMK或MongoMK | 不适用 | |
数据存储 | 文件DS | 不适用 | |
方案 |
|
要使用MongoDB启用与使用一个TarMK系统相同数量的作者,您需要一个具有两个AEM节点的集群。 与一个TarMK实例相比,四个节点的MongoDB群集可以处理1.8倍的“作者”数量。 8节点MongoDB群集可以处理2.3倍于一个TarMK实例的作者数。
创作TarMK节点 | 创作MongoMK节点 | MongoDB节点 | |
服务器 | AWS c3.8xlarge | AWS c3.8xlarge | AWS c3.8xlarge |
操作系统 | Red Hat® Linux® | Red Hat® Linux® | Red Hat® Linux® |
CPU/内核 | 32 | 32 | 32 |
RAM | 60 GB | 60 GB | 60 GB |
磁盘 | 固态硬盘 — 10k IOPS | 固态硬盘 — 10k IOPS | 固态硬盘 — 10k IOPS |
Java™ | oracleJRE版本8 | oracleJRE版本8 |
不适用 |
JVM栈16GB | 30 GB | 30 GB | 不适用 |
产品 | AEM 6.2 | AEM 6.2 | MongoDB 3.2 WiredTiger |
Nodestore | TarMK | MongoMK | 不适用 |
数据存储 | 文件DS | 文件DS |
不适用 |
方案 |
|
此页面上提供的准则可概括如下:
带有文件数据存储的TarMK — 为大多数客户推荐的架构:
具有文件数据存储的MongoMK — 为创作层的水平可扩展性推荐的体系结构:
Nodestore — 存储在本地磁盘上,而不是网络连接存储(NAS)
使用时 Amazon S3:
除了开箱即用索引之外,还应创建自定义索引 — 基于最常见的搜索
自定义工作流可以显着提高性能 — 删除“更新资产”工作流中的视频步骤,禁用未使用的监听器等。
欲知更多详情,另请阅读 建议的部署 页面。