性能监控系统的所有层

时间:2011-05-24 08:35:22

标签: performance jmeter performance-testing loadrunner

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

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

我已经在链中标记了x我感兴趣的是监控,例如avg响应时间。

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

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

2 个答案:

答案 0 :(得分:2)

这个标准应该是Application Response Measurement (ARM)。它是一组交叉语言的API,可以满足您的需求。问题在于,实施此规范的产品往往都是庞大,昂贵的“企业”级别监控工具。想想多周安装,顾问,更多基础设施和大量流行语。

但是,如果这是一个具有关键任务预算的关键任务应用程序,这可能就是您所需要的。但是你可以自己构建自己的东西而不需要太多努力。如果您仍想使用该API,快速搜索至少会出现一个open source ARM implementation

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

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

答案 1 :(得分:1)

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

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

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

James Pulley

主持人(YahooGroups LoadRunner,Advanced-Loadrunner; GoogleGroups lr-LoadRunner; Linkedin LoadRunner,LoadRunnerByTheHour; SQAForums LoadRunner,WinRunner)