3

我使用几种负载测试工具(Loadrunner、JMeter、NeoLoad)来测试不同应用程序的性能。例如,我想知道是否可以监视应用程序堆栈的所有层。假设我有以下数据链。

负载均衡器 <-x-> 应用程序服务器 <-x-> RMI <-x-> Java 应用程序 <-x-> MQ <-x-> 旧应用程序 <-x-> 数据库

我在链中标记了x我感兴趣的监控,例如平均响应时间。

显然,我们可以简单地在所有端点上创建一个包装器,它会为我们收集统计数据,也许我们可以将它导入 loadrunner 或其他负载测试工具,并使用工具内置的性能统计信息来辅助下摆,但也许有工具/应用程序已经这样做了?

如果没有,我们应该如何进行,以收集这种统计数据?

4

2 回答 2

2

这个标准应该是应用程序响应测量(ARM)。这是一组跨语言的 API,可以满足您的需求。问题在于,实现该规范的产品都往往是大型、昂贵的“企业”级监控工具。想想多周安装、顾问、更多基础设施和大量流行语。

不过,如果这是一个具有关键任务预算的关键任务应用程序,那么这可能就是您所需要的。但是您也许可以构建自己的功能,而无需付出太多努力。如果您仍想使用该 API,快速搜索至少会找到一个开源 ARM 实现。

另一种选择是简单地让您可以针对系统的每一层运行事务以检查一般响应性。例如,你可以在 LB 上有一个静态网页,在应用服务器上有一个 no-op tx,在 Java 应用上有一个“hello”servlet,将消息直接放在队列中等等。在性能/负载测试期间,这些可以由负载测试工具直接命中,或者您可以编写一个包装器 servlet / 应用程序调用,将其作为单个 HTTP(RMI?)调用来执行。每分钟运行几次这些不会给系统增加太多负载,但它应该可以帮助您确定哪个层较慢。这种方法的好处是它也适用于生产,只需注意安全问题。

对于单用户类型的测试,你知道你有问题(例如这个 tx 是“慢”),我在网络跟踪方面也很幸运。这很乏味,但是当您不确定哪一层很慢时,在几台机器上启动网络跟踪并运行单个 tx 通常可以很好地了解系统在做什么。

于 2011-05-24T11:32:24.777 回答
1

过去我曾以多种方式处理过这种分解。第一种是在非常低的级别使用协议分析器转储的数据来查找对话离开 X 层并进入 Y 层的时间点。第二种方法是通过对各个层使用日志检查。在这种情况下,可以使您的检查非常有用的是所有组件(syslog、Rsyslog 等)的通用日志服务器和一个不错的日志解析工具,例如免费提供的 Microsoft Logparser。第三种方法利用存储在数据库中的应用程序的审计跟踪。在处理具有消费者/生产者模型和传递信息而不是直接连接的总线的企业服务总线样式应用程序时,您可能会发现这一点。我看到的审计跟踪通常存储在数据库中,并允许通过整个应用程序基础设施跟踪单个事务。您的负载均衡器,作为一种网络设备,可能不在此范围内。

请注意,如果您使用协议分析器或日志路由,请确保将所有源信息设备同步到公共时间服务器。当您进入分析阶段时,以时间戳为基础关闭您的一个收集器(分析器、应用程序日志)确实是一种令人毛骨悚然的体验。

至于如何从收集的数据转移到 LoadRunner,那部分是非常机械的。Analysis 程序支持导入外部数据点的接口。格式非常具体,并记录在帮助和在线文档中。这个导入过程效果很好,因为我经常不得不使用它来收集来自我没有直接监控访问权限的主机的统计信息,但需要将其作为受监控的测试基础设施的一部分包含在内。

詹姆斯·普利

版主(YahooGroups LoadRunner、Advanced-Loadrunner;GoogleGroups lr-LoadRunner;Linkedin LoadRunner、LoadRunnerByTheHour;SQAForums LoadRunner、WinRunner)

于 2011-05-24T12:35:56.700 回答