性能树

范围

下图旨在为解决性能问题需要采取的步骤提供指导。 它分为5个部分,以便于阅读。

图中的每个步骤都会链接到文档资源或推荐。

先决条件和假设

假定在给定页面(AEM控制台或网页)上观察到性能问题,并且可以一致重现。 在开始调查之前,必须具备测试或监控性能的方法。

分析从步骤0开始。 目标是确定哪个实体(调度程序、外部主机或AEM)负责性能问题,然后确定应调查哪个区域(服务器或网络)。

章节 1

chlimage_1-103

章节 2

chlimage_1-104

章节 3

chlimage_1-105

章节 4

chlimage_1-105

第5节

chlimage_1-107

步骤 标题 资源
步骤 0 分析请求流

您可以在浏览器中使用标准HTTP请求分析来分析请求流。 有关如何在Chrome上执行此操作的更多信息,请参阅:

https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/resource-
loadinghttps://developers.google.com/web/tools/chrome-devtools/profile/network-performance/understanding-resource-timing

步骤 2 请求是否来自外部主机? 您可以在浏览器中使用标准HTTP请求分析来分析请求流。 请参阅上述链接,了解如何在Chrome上执行此操作。
步骤 3 是否可以缓存请求? 有关可缓存请求和Dispatcher性能优化通知的更多信息,请参阅Dispatcher性能优化
步骤 4 是来自Dispatcher的请求吗?

查看Dispatcher调试文档以查看请求是否缓存正确。

步骤 5 Dispatcher是否尝试通过AEM来验证每个请求? 在传送缓存的资源之前,检查调度程序是否向AEM发送了HEAD身份验证请求。 为此,可以在AEM access.log中查找HEAD请求。 有关更多信息,请参阅日志记录
步骤 6 Dispatcher的地理位置离用户是否很远? 将Dispatcher移近用户。
步骤 7 Dispatcher的网络层是否正常?
调查网络层的饱和和延迟问题。

步骤 8 速度慢能否在本地实例中重现?

使用Tough Day从生产实例中复制“真实世界”条件。 如果对于您的开发解决方案不现实,请确保在其他网络上下文中测试生产实例(或相同的暂存实例)。

步骤 9 服务器的地理位置离用户很远吗? 将服务器移近用户。
步骤10和29 调查网络层

调查网络层的饱和和延迟问题。

对于创作层,建议延迟不要超过100毫秒。

有关性能优化提示的更多信息,请参阅此页面

步骤 11 更靠近服务器或为每个区域添加一个
步骤 12 AEM服务器故障诊断 有关更多信息,请查看图表中的以下子步骤。
步骤 13 检查硬件要求 查看硬件大小调整指南中的文档。
步骤 14 检查性能问题的常见原因
步骤 15 查找慢速请求

您可以通过分析request.log或使用rlog.jar检查慢速请求。

有关使用rlog.jar的更多信息,请参阅此页面。

请参阅使用rlog.jar查找持续时间较长的请求

步骤 16 配置文件服务器

有关可以与AEM一起使用的分析工具的信息,请参阅监控和分析性能的工具

步骤 17 在分析中查找慢速方法
步骤 18 分析的常见情况 请参阅性能优化部分中的分析特定方案
步骤 19 100% CPU https://helpx.adobe.com/cn/experience-manager/6-3/sites-deploying/monitoring-and-maintaining.html#MonitoringPerformance
步骤 20 内存不足
  1. 内存不足
  2. 我的应用程序引发内存不足错误
  3. 在Helpx上分析内存问题。
步骤 21 磁盘I/O

请参阅监视和维护文档中的磁盘I/O部分。

步骤22和22.1 缓存比率 请参阅计算调度程序缓存比率

步骤 23 慢速查询 有关查询和索引的最佳实践
步骤 24 存储库优化
步骤 25 工作流运行

步骤 26 MSM基础架构

多站点管理器最佳实践

步骤 27 资产调整
  1. 资产同步服务
  2. 多个DAM实例
  3. 性能调整提示文章此处为,此处为
步骤 28 未结会话

检查未关闭的JCR会话

步骤 30 更近一些Dispatcher(每个“区域”添加一个?)
步骤 31 在调度程序之前使用CDN 将 Dispatcher 与 CDN 结合使用
步骤 32 在调度程序级别使用会话管理来卸载AEM服务器

启用安全会话

步骤 33 使请求可缓存
  1. 常规Dispatcher配置
  2. 配置调度程序缓存

如何提高缓存率;使请求可缓存(Dispatcher最佳实践)

此外,为优化缓存配置,还请考虑以下设置

  1. 为非GET的HTTP请求设置无缓存规则
  2. 将查询字符串配置为不可缓存
  3. 不缓存缺少扩展名的URL
  4. 缓存身份验证标头(自Dispatcher版本4.1.10起可能)
步骤 34 升级Dispatcher版本

您可以在此位置下载最新的Dispatcher版本:

跟踪链接

步骤 35 配置Dispatcher 配置Dispatcher
步骤 36 检查缓存失效
步骤37和38 延迟加载 请参阅AEM Web性能的Gem会议。
步骤 39 使用预连接以减少连接开销 见上面所示的创业板会议。 此外,W3c上的其他文档还预先连接: https://www.w3.org/TR/resource-hints/#dfn-preconnect
步骤40和41
外部主机的延迟和响应时间 调查外部主机的延迟和响应时间。
步骤45
和47

使用HTTP/2 有关步骤37、38和39,请参见创业板会议。 另外,请查看论坛帖子(关于HTTP/2支持)。
步骤 49 收缩负载大小 启用 Gzipp并 缩小图像大小
步骤42和43 保持活动状态

Keep-Alive标头是否存在于重复使用连接的不同请求中? 否则,这意味着每个请求都会导致另一个连接建立,这会产生不必要的开销。 (浏览器中的标准HTTP请求分析)

您可以检查代理服务器工具以检查是否保持活动连接。

步骤 44 发出了多少个请求? 在浏览器中执行标准HTTP请求分析。
步骤 46 减少请求数
  1. 连接资源(图像、CSS Sprite、JSON等)
  2. Clientlibs嵌入:
    1. 创建客户端库文件夹 — 请参阅使用嵌入最小化请求标题
步骤 48 有效负载的大小是多少? 浏览器中的标准HTTP请求分析
步骤50和51 JS代码阻止 https://docs.adobe.com/ddc/en/gems/aem-web-performance.html

在此页面上