request.log分析示例 | AEM

描述 description

环境

Experience Manager 6.5

问题/症状

Adobe Experience Manager (AEM) request.log 包含各种用于分析性能问题的有用信息,如响应时间。 以下是使用Linux命令(包括一些外部命令,如ruby)的分析示例列表 [ 1] 和数据集 [ 2] )。

安装指南

[ 1] https://www.ruby-lang.org/en/documentation/installation/

[ 2] https://www.gnu.org/software/datamash/download/

解决方法 resolution

目录

A.导言

  • 格式 request.log

B.准备步骤

  1. 数据清理
  2. 重新启动时间
  3. 每小时的访问次数
  4. 最大并发处理量
  5. 拆分日志文件
  6. 合并请求记录和响应记录

C.分析实例

  1. 最重的访问
  2. 访问缺少的响应
  3. 访问速度慢
  4. 响应时间的时间序列数据
  5. 最小值、平均值(平均)、中间值、最长响应时间
  6. 每个时段的访问次数
  7. 每时段的响应状态数
  8. 最常见的URL
  9. access.log 记录 request.log 记录

D.结论

答: 介绍

格式 request.log

AEM 6.5生成 request.log 格式化。 由于系统限制,本文中的命令行显示为图像而非纯文本。

示例 request.log

在本文中,一行包含“ — > ”是指“请求记录”。 带有“”的行< — ”是“响应记录”。

请求记录

当AEM收到请求时,将记录请求记录。 它包含接收日期和时间、请求 ID、请求方法和 URL。

响应记录

当AEM响应请求时,将记录响应记录。 它包含响应的日期和时间、请求 ID、状态代码、内容类型和响应时间(以毫秒为单位)。

查找上的相应手册 解释request.log.

B. 准备步骤

步骤 1. 数据清理

在深入分析之前, request.log,标准化日志记录非常重要。

第一个 sed 命令可删除响应记录的Content-Type中多余的空格,以防止使用空格进行错误的字段分隔。 ruby命令(请参见 [ 1] (用于安装Ruby)将日期格式转换为ISO 8601。 Ruby 命令还用空格而不是冒号分隔日期和时间。

步骤 2. 重启时间

重新启动AEM并安装Service Pack会重置请求ID: request.log. 请求记录有请求 ID = 0 表示可能存在此类操作。

在上面的示例中,请求 ID 在 13:08:49 和 13:26:13 处重置为 0。

步骤 3. 每小时访问次数

计算每小时的访问次数以及 request.log.

步骤 4. 最大并发处理

并发处理的数量信息有助于猜测 AEM 的服务器负载。

默认情况下,AEM 中 Jetty 的最大并发连接数设置为 200。完成响应后释放套接字存在延迟。当并发处理的数量超过大约 170 时会无法接受新的请求。

步骤 5. 拆分日志文件

请求ID request.log 在AEM重新启动或安装Service Pack时重置。 由于此行为,当 request.log 包含此类操作。 要执行精确分析并减小一次处理的文件大小,请拆分 request.log 在请求中使用请求记录 ID = 0.

步骤 6. 合并请求记录和响应记录

按请求 ID 合并请求和响应记录可以更轻松地在性能问题开始时即刻发现。 此合并的日志文件将在后面的示例中使用。

最后一个 sed 命令向没有相应响应记录的请求记录添加一个虚拟响应。 也可能有没有请求记录的响应记录。但可以忽略这些记录,因为它们通常不是需要调查的问题。

合并的日志文件应该如下所示:

C. 分析示例

示例 1. 最大量的访问

将合并后的日志文件按响应时间降序排列,包括没有响应的访问。

示例 2. 缺少响应的访问

使用虚拟响应时间提取缺少相应响应记录的访问。

如果在没有响应的情况下接收访问的时间与服务器负载的增加相关,则这些访问可能触发了性能问题。

示例 3. 访问速度慢

提取耗时超过 10 秒的访问。

当点击量过高时,将 [ 0-9] {5} 替换为 [ 0-9] {6}grep 用于缩小范围以找出耗时100秒以上的访问的命令。

示例 4. 响应时间的时间序列数据

仅从数据中提取时间戳和响应时间对于创建图形很有帮助。

省略立即响应的访问可以使数据更具效率。以下示例提取的是耗时超过一秒的访问。

示例 5. 最小值、中间值(平均)、中位值、最大响应时间

上面的例子使用 datamash 命令 (https://www.gnu.org/software/datamash/) 进行统计处理。如果日志中包含无响应的访问,则虚拟值将会影响结果。

示例 6. 一段时间内的访问次数

统计每十分钟的访问次数。结果有助于确定流量大是否导致了性能问题。

以下示例将数据缩小到仅 POST 请求。一个典型的用例是确定内容创作或复制是否集中到了发布层。

示例 7. 一段时间内的响应状态次数

使用 datamash 命令创建每十分钟每个响应状态数的表格。

示例 8. 最常见的 URL

打印每十分钟访问最频繁的前三个 URL。

示例9. access.log 记录 request.log 记录

Search access.log 对应于特定请求ID的记录。

如果同时对同一URL进行了多次访问,则结果将显示多次 access.log 单个请求ID的记录。

D.结论

本文中的示例应该有助于您分析性能问题。

所列示例已经在 CentOS 7.5 和 Ubuntu 22.04LTS 上进行了测试,但它们可能无法按预期工作,具体情况取决于您的环境,例如命令的不同版本或变体。 请根据您环境中安装的命令相应地调整它们。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f