性能树 performance-tree

范围 scope

下图旨在提供有关解决性能问题应采取的步骤的指导。 为了便于阅读,它分为五个部分。

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

先决条件和假设 prerequisites-and-assumptions

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

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

章节 1 section

chlimage_1-103

章节 2 section-1

chlimage_1-104

章节 3 section-2

chlimage_1-105

章节 4 section-3

chlimage_1-106

章节 5 section-4

chlimage_1-107

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

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

https://developer.chrome.com/docs/devtools/

步骤 2
请求是否来自外部主机?
您可以在浏览器中使用标准HTTP请求分析来分析请求流。 请参阅上面的链接,了解如何在Chrome上执行此分析。
步骤 3
是否可以缓存请求?
有关可缓存的请求和一般Dispatcher性能优化建议的更多信息,请参阅 Dispatcher性能优化.
步骤 4
是否来自Dispatcher的请求?
要查看请求是否正确缓存,请检查 Dispatcher调试文档.
步骤 5
Dispatcher是否尝试通过AEM验证每个请求?
检查Dispatcher是否发送 HEAD 请求AEM进行身份验证,然后再传递缓存的资源。 查找 HEAD AEM中的请求 access.log. 有关更多信息,请参阅 记录.
步骤 6
Dispatcher的地理位置是否远离用户?
将Dispatcher移到离用户更近的位置。
步骤 7
Dispatcher的网络层是否正常?
调查网络层的饱和度和延迟问题。
步骤 8
慢度是否可以在本地实例中重现?
使用 艰难的一天 从生产实例中复制“真实”条件。 如果此场景对于开发空间并不现实,请确保在不同的网络上下文中测试生产实例(或相同的暂存实例)。
步骤 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://experienceleague.adobe.com/docs/experience-manager-release-information/aem-release-updates/previous-updates/aem-previous-versions.html?lang=zh-Hans
步骤 20
内存不足
  1. 内存不足
  2. 我的应用程序引发内存不足错误
  3. 分析内存问题。
步骤 21
磁盘I/O
请参阅 磁盘I/O 部分(位于“监测和维护”文档中)。
步骤22和22.1
缓存比率
请参阅 计算Dispatcher缓存比率.
步骤 23
查询速度慢
有关查询和索引的最佳实践
步骤 24
存储库调整
步骤 25
正在运行工作流
步骤 26
MSM基础架构
多站点管理器最佳实践
步骤 27
资产调整
  1. 资源同步服务
  2. 多个DAM实例
  3. 性能调整提示文章 此处.
步骤 28
未关闭的会话
检查未关闭的JCR会话
步骤 30
更接近Dispatcher(是否为“区域”添加一个?)
步骤 31
在Dispatcher之前使用CDN
将Dispatcher与CDN结合使用
步骤 32
要卸载AEM服务器,请使用Dispatcher级别的会话管理
启用安全会话
步骤 33
使请求可缓存
  1. 常规Dispatcher配置
  2. 配置Dispatcher缓存

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

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

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

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

关注链接

步骤 35
配置Dispatch
配置Dispatcher
步骤 36
检查缓存失效
步骤37和38
延迟加载
请参阅有关AEM Web性能的Gem会话。
步骤 39
使用预连接以减少连接开销
请参阅上述Gem讲座。 此外,关于W3c的其他预连接文档: https://html.spec.whatwg.org/#linkTypes
步骤40和41
外部主机延迟和响应时间
调查外部主机的等待时间和响应时间。
步骤45
和47
使用HTTP/2
有关步骤37、38和39,请参阅Gem会议。 另外,签出 有关HTTP/2支持的论坛帖子。
步骤 49
缩小有效负载大小
启用Gzip缩小图像大小.
步骤42和43
保持活动状态

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

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

步骤 44
提出了多少个请求?
在浏览器中执行标准HTTP请求分析。
步骤 46
减少请求数
  1. 连接资源(图像、CSS脚本、JSON)
  2. Clientlibs嵌入:
    1. 创建客户端库文件夹 — 请参阅标题使用嵌入以最大限度地减少请求
步骤 48
有效负载的大小是多少?
浏览器中的标准HTTP请求分析
步骤50和51
JS代码阻止
https://experienceleague.adobe.com/docs/experience-manager-gems-events/gems/gems2016/aem-web-performance.html?lang=zh-Hans
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2