性能测试是任何AEM部署的重要组成部分。 根据客户要求,可以对发布实例、创作实例或两者执行性能测试。
本文档概述了执行性能测试的总体策略和方法,以及Adobe为帮助该过程而提供的一些工具。 最后,从代码分析和系统配置的角度阅读对AEM 6中可用工具的分析,以帮助进行性能调整。
进行性能测试时,请确保尽可能模拟生产环境。 虽然此类任务通常比较困难,但必须确保这些测试的准确性。 在设计性能测试时,必须考虑以下几点:
AEM中的许多性能衡量指标(如查询响应时间)都可能受系统上内容的大小影响。 确保测试环境尽可能接近生产数据的副本非常重要。
在生产环境中部署的AEM版本和修补程序应在测试环境中相同。 在部署到生产环境的代码版本上进行测试也很重要。
如果没有与生产环境尽可能相似的环境,这些测试将毫无意义。 理想情况下,硬件规格、网络接口、负载平衡器和CDN应与测试环境中的生产环境相同。
直到系统负载较重时,才会出现许多性能问题。 良好的性能测试应该模拟生产系统在其峰值下的负载。
在开始性能测试之前,必须设置非功能要求以指定负载和响应时间。 如果您要从现有系统迁移,请确保响应时间与当前的生产值类似。 对于载荷,最好取当前峰值载荷,再加倍。 这样做可以确保网站在增长过程中能够继续保持良好的性能。
市面上有很多市面上可买到的性能测试工具。 运行负载生成工具时,必须确保执行测试的计算机具有足够的网络带宽。 否则,一旦测试计算机达到其连接的限制,则不会在受测试的环境中生成额外负载。
Adobe 艰难的一天 工具可用于在AEM实例上生成负载并收集性能数据。 Adobe的AEM工程团队实际上使用该工具对AEM产品本身进行负载测试。 在Tough Day中执行的脚本通过属性文件和JMX XML文件进行配置。 欲了解更多信息,请参见 Hearth Day文档.
AEM提供了开箱即用的工具,用于快速查看有问题的查询、请求和错误消息。 欲了解更多信息,请参见 诊断工具 部分(位于操作仪表板文档中)。
Apache提供了一个名为的产品 JMet 可用于性能和负载测试,以及功能行为。 它是开放源码软件,使用自由,但功能集比企业产品更小,学习曲线更陡峭。 您可以在Apache的网站上找到JMeter,网址为 https://jmeter.apache.org/
加载运行程序 是一种企业级负载测试产品。 提供了免费评估版。 欲知更多信息,请访问 https://www.microfocus.com/en-us/portfolio/performance-engineering/overview
网站负载测试工具,如 韦尔卡拉 也可以使用。
测试移动或响应式网站时,必须使用一组单独的工具。 它们的工作方式是限制网络带宽,模拟速度较慢的移动连接,如3G或EDGE。 使用范围更广的工具包括:
监测
此 监控性能 文档是有关工具和方法的有用资源,可用于诊断问题并查明需要调整的区域。
触屏UI中的开发人员模式
AEM 6触屏UI中的一项新增功能是开发人员模式。 就像作者可以在编辑和预览模式之间切换一样,开发人员可以在作者UI中切换到开发人员模式。 这样,您就可以查看页面上每个组件的渲染时间,并查看任何错误的栈栈跟踪。 有关开发人员模式的更多信息,请参阅此 CQ Gems演示.
使用rlog.jar读取请求日志
要更全面地分析AEM系统上的请求日志,请执行以下操作 rlog.jar
可用于搜索和排序 request.log
AEM生成的文件。 此jar文件包含在中的AEM安装中 /crx-quickstart/opt/helpers
文件夹。 有关rlog工具和请求登录常规的详细信息,请参阅 监控和维护 文档。
Explain查询工具
此 说明查询工具 在ACS中,AEM工具可用于查看运行查询时使用的索引。 在优化运行缓慢的查询时,此工具非常有用。
PageSpeed工具
Google的PageSpeed工具提供网站分析功能,用于确保遵守页面性能最佳实践,并提供一个插件,该插件可与Dispatcher一起安装在Apache实例上以进行其他优化。
请参阅 PageSpeed Tools网站.
要在创作环境中执行性能测试,必须模拟生产作者的体验。 即,创作安装必须包含所有组件、OSGi包、UI自定义、自定义索引以及您为生产创作实例设置的任何其他附加内容。
有许多为性能和负载测试而设计的自动化框架。 自定义脚本可以记录在这些工具中,然后回放以模拟同时执行类似内容创建和激活活动的作者数量峰值。 建议您使用“困难日”工具来模拟上传数千个资产或激活大量页面等活动。
对于需要大量资产加载或页面创作的环境类型,必须使用Tough Day等工具。 这样做可确保环境在峰值负载下高效运行。 WebDAV 是一种不需要编写脚本的工具,也可用于加载大量资产。
在具有MongoDB后端的系统上,AEM提供了多个 JMX 执行负载或性能测试时必须监视的MBean:
https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D6%2Cname%3D%22Consolidated+Cache+statistics%22%2Ctype%3D%22ConsolidatedCacheStats%22
对于命名的缓存 Document-Diff,则命中率应大于 .90
. 如果点击率低于90%,您可能需要编辑 DocumentNodeStoreService
配置。 Adobe产品支持可为您的环境推荐最佳设置。
https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D16%2Cname%3D%22Oak+Repository+Statistics%22%2Ctype%3D%22RepositoryStats%22
此 ObservationqueueMaxLength 部分显示Oak的观察队列中过去小时、分钟、秒和周的事件数。 在“每小时”部分中查找事件的最大数量。 将此数字与 oak.observation.queue-length
设置。 如果为观察队列显示的最高数量超过 queue-length
设置:
com.adobe.granite.repository.impl.SlingRepositoryManager.cfg
包含参数 oak.observation.queue‐length=50000
默认设置为10,000,但大多数部署都必须将其增加到20,000或50,000。
必须接受负载测试的部署的最重要部分是面向最终用户的Publish或Dispatcher环境。
可以使用第三方自动化测试工具来测试网站的性能。 这些工具允许您记录用户在网站上执行的步骤,并同时运行多个会话,以模拟生产网站的典型负载。
大多数生产网站都实施了优化,例如Dispatcher缓存和已建立的内容交付网络。 在测试时,请确保这些优化也适用于测试环境。 除了监控最终用户的响应时间,还要监控发布服务器和调度程序上的系统指标,以确保系统不受硬件资源的限制。
在不要求高级别个性化的系统上,Dispatcher应缓存大多数请求。 因此,发布实例上的负载应保持相对平坦。 如果需要高级别的个性化,建议对个性化内容使用iFrame或AJAX请求等技术,以尽可能多地允许Dispatcher缓存。
对于基本测试,Apache Bench可用于测量Web服务器的响应时间,并帮助创建负载以测量内存泄漏等情况。 请参阅以下示例中的 监控文档.
在创作实例上运行性能测试后,必须调查、诊断和解决任何问题。 在执行分析和解决问题时,可以使用多种工具和技术:
您可以检查 请求性能日志 操作功能板中的。 此工具可用于识别较慢的页面请求
使用分析运行缓慢的查询 查询性能工具
查看错误日志,了解错误或警告。 有关更多信息,请参阅 日志记录.
监视系统硬件资源,如内存和CPU利用率、磁盘I/O或网络I/O。这些资源通常是造成性能瓶颈的原因。
优化页面的架构及其寻址方式,以最大限度地减少URL参数的使用,从而允许尽可能多的缓存。
如果编辑创作实例上的某些页面或组件时出现问题,请使用TouchUI开发人员模式检查有问题的页面。 这样做可以提供页面上每个内容区域的划分及其加载时间。
缩小站点上的所有JS和CSS。 查看此 博客帖子.
从组件中消除嵌入的CSS和JS。 它们应该包含在客户端库中并对其进行缩小,以最大限度地减少渲染页面所需的请求数。
要检查服务器请求并查看哪些请求花费的时间最长,请使用Chrome的“网络”选项卡等浏览器工具。
一旦识别出问题区域,就可以检查应用程序代码以优化性能。 任何开箱即用的AEM功能无法正确执行,都可以通过Adobe支持来解决。