总结:随着并发量的增加,您需要衡量吞吐量是否下降以及响应时间是否增加。 可扩展性 可扩展性不是压力测试指标。 可扩展性指标对于容量规范非常有用,并且可以提供其他测试。 不提供帮助您识别应用程序瓶颈的信息最终,您应该测试对用户最重要的指标。
什么是基准测试?
简单来说,基准测试就是给系统设计带来困难的压力测试。 通常的目标是了解系统的行为。 但还有其他原因。 例如,重现特定的系统状态或在新硬件上运行可靠性测试。
为什么我们需要基准
基准是了解系统在特定工作负载下发生的情况的唯一有效且方便的方法。 系统测试包括观察不同压力下的行为,评估系统的能力,了解哪些变化是重要的,以及系统如何处理不同的数据。
基准测试可以完成:
验证系统假设以及这些假设是否符合现实条件 重现并解决系统中的异常行为 测试系统的当前行为并利用历史基准测试来分析结果模拟比当前系统更高的负载,并在压力增加时识别系统瓶颈 规划未来的业务增长变化 测试应用程序适应其所处环境的能力。 测试不同的硬件、软件和操作系统配置 证明新购买的设备是可用的。这不是真正的压力测试。 与现实世界的压力相比,基准测试对系统施加的压力通常相对简单。 实际压力是不可预测的、多变的,有时过于复杂而难以解释。
那么基准测试和实际压力有什么区别呢?
数据量、数据分布和查询,但最重要的是,基准测试通常最大的测试工具通常会受到限制,因为它会使系统超载。因为它需要尽快完成。 。如果系统能够在阈值内完成测试,那么压力
的底线是只能进行粗略的测试来确定系统的大致余量。 当然,您可以运行真正的压力测试,但在构建数据集和压力时必须非常小心,并且它不再是基准测试。 基准测试应该简单直接,并且结果应该易于相互比较。
基准测试策略
两个主要策略:
集成:对整个系统进行全面测试 单组件:多带测试 MySQL
多带测试来测试整个系统 这里有一些原因进行集成测试而不是:
用户关心的不仅仅是MySQL本身的性能,还关心整体应用。 MySQL 不一定是您的应用程序的瓶颈。 它只能通过测试整个应用程序来发现。 集成测试可以更准确地揭示应用程序的真实性能,但这对于多频段组件来说很难做到。
但是,集成测试很难设置,如果基准设计有缺陷,则可能很难进行。结果可能无法反映真实情况,决策可能是错误的。
因此,你可能不需要了解整个应用程序,而只需要关注MySQL的性能。 这至少可以在项目早期完成。 在以下情况下您可以选择仅测试 MySQL:
需要比较针对应用程序中的特定问题测试不同模式或查询的性能。 为了避免长时间的基准测试,您可以使用短的基准测试来运行快速的“循环”。
此外,如果可以针对实际数据集完成查询,那么重复运行查询和查询会很有帮助。 ,如果可能的话,创建生产数据的快照。 不幸的是,基于真实数据设置基准测试既复杂又耗时,而且在开发新应用程序时,可用的数据量很小。 如果您想在扩展后测试性能,唯一的选择是模拟大量数据和压力。 执行
测试哪些指标
不同的指标应该以不同的方式进行测试。
以下指标:
吞吐量:每单位时间的事务数。 此类基准测试主要针对在线事务处理 (OLTP) 吞吐量。 常见的测试单位是每秒或每分钟的事务数 (TPS/TPM)。 响应时间或延迟:该指标用于测试一项任务所需的总体时间。,通常使用响应时间的百分比。 并发性:一个非常重要但经常被误解的指标。 并发基准测试应关注正在执行的并发操作,或者同时操作的线程或连接的数量。 您需要衡量吞吐量是否会随着并发性的增加而降低,响应时间是否会增加。 可扩展性:可扩展性不是压力测试指标。 可扩展性指标对于容量规范非常有用,可以提供其他测试无法提供的信息。 ,帮助您识别应用程序中的瓶颈。
最终,您应该测试对用户最重要的指标。 因此,您应该收集尽可能多的需求,并根据这些需求设计基准测试。
如何进行基准测试
以下是常见的测试错误。
使用真实数据的子集而不是完整数据集时出现错误数据分布使用不切实际的分布参数。 在多用户场景下,仅执行单用户测试。 在单个服务器上测试分布式应用程序与真实用户行为不匹配。 重复运行相同的查询而不检查错误。 忽略系统预热。 由于该过程,测试结果因州而异。 使用默认服务器配置,测试时间太短,因为基准测试必须持续一定时间。
设计和计划基准测试
提出问题以阐明您的目标。 决定是使用标准基准测试还是设计专门的测试。
对于标准基准测试,您需要确保选择适当的测试计划。
设计专用基准测试非常复杂,通常需要迭代过程。 。 首先,你需要对你的生产数据集进行快照(你可以很容易地恢复),然后查询数据(选择一个有代表性的时间段;时间段的选择比较少)。你可以选择多个时间段来进行。涵盖系统范围的活动状态)
3. 可以在不同级别记录查询。
4. 即使您不需要创建专门的基准测试,也要写下您的测试计划(测试数据、系统配置步骤、测量和分析结果的方法以及预热解决方案)。
5. 创建脚本来分析测试结果
运行基准测试需要多长时间
基准测试应该运行足够的时间时间很重要,必须经过测试和测试在稳定状态下观察到
测试中的一个常见错误是仅运行一系列短期测试。 如果您没有花费足够的时间来完成正确完成的基准测试,那么所花费的所有时间都将被浪费,因此有时您可以信任其他人的测试结果并使用
来确定您的系统性能,您可以编写一个 shell 脚本来。记录
并获取状态。 测试结果、配置文件、测试指标、脚本和其他相关指令都存储在那里。
获得准确的测试结果
首先,获得准确测试结果的最佳方法是回答有关基准测试的一些基本问题。
您是否选择了正确的基准?您是否使用了错误的测试标准?
接下来,在每次测试之前,请确保您的测试结果是可重复的。 确保系统状态一致
如果测试过程中改变了数据或schema,每次测试前使用快照恢复数据是有必要的。
数据每次测试期间发生的变化必须尽可能完整。 虽然机会很小,但通常都是通过重复来完成的。
评论前必须登录!
注册