性能树 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是否在传递缓存的资源之前向AEM发送HEAD请求以进行身份验证。 在AEM access.log中查找HEAD请求。 有关详细信息,请参阅日志记录
步骤 6
Dispatcher的地理位置是否远离用户?
将Dispatcher移到离用户更近的位置。
步骤 7
Dispatcher的网络层是否正常?
调查网络层的饱和度和延迟问题。
步骤 8
慢度是否可以在本地实例中重现?
使用Touch 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://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
Assets调整
  1. Assets同步服务
  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
配置Dispatcher
配置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请求分析)

您可以检查代理服务器工具以检查Keep-Alive连接。

步骤 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