2011-05-24 160 views
2

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

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

我在哪里在我有兴趣监测的链中标记了x,例如平均响应时间。

显然,我们可以简单地创建这将收集的统计数据为我们所有端点的包装,也许我们可以把它导入到LoadRunner的或其他loadtesting工具和副业下摆的工具内置的性能统计数据,但也许有工具/应用哪个已经这样做?

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

回答

2

这个标准应该是Application Response Measurement (ARM)。这是一组跨语言的API,只是做你正在寻找的东西。问题在于实现这个规范的产品往往都是大而昂贵的“企业”级监控工具。考虑多周的安装,顾问,更多的基础设施和大量流行语。

不过,如果这是一个任务关键型预算的关键任务应用程序,这可能是您需要的。但是你可以在没有太多努力的情况下建立自己的团队。如果您仍然想使用该API,快速搜索至少会出现一个open source ARM implementation

另一种选择是简单地让您可以针对系统的每一层运行事务来检查一般响应性。例如,您可以在LB上有一个静态网页,在应用程序服务器上没有任何操作,在Java应用程序上有一个“hello”servlet,将消息直接放在队列中,等等。在性能/负载测试期间,这些可以直接由负载测试工具命中,也可以编写一个包装servlet /应用程序调用,将其作为单个HTTP(RMI?)调用执行。每分钟运行这几次不会给系统增加太多的负载,但它应该可以帮助您确定哪一层速度较慢。这种方法的好处在于它也可以在生产环境中工作,只需要注意安全问题。对于单用户类型的测试,如果你知道你有问题(例如,这个tx是“慢”),我也有很好的网络跟踪运气。这是非常乏味的,但是当你不确定什么层是缓慢的,在几台机器上启动一个网络跟踪并运行一个tx时,通常可以很好地了解系统正在做什么。

1

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

请注意,如果您使用协议分析器或日志路由,请确保将所有源信息设备同步到通用时间服务器。当你进入分析阶段时,让你的收藏家之一(分析器,应用程序日志)在时间戳的基础上真的可以成为头发拉动经验。

至于如何从收集的数据转移到LoadRunner中,那部分是非常机械的。分析程序支持导入外部数据点的界面。格式非常具体,并在帮助和在线文档中有记录。此导入过程非常顺利,因为我经常不得不使用它来从主机收集统计信息,这些统计信息不具有直接监视访问权限,但需要将其作为受监视测试基础结构的一部分。

詹姆斯滑轮

主持人(YahooGroups LoadRunner的,高级 - LoadRunner的; Google网上论坛LR-LoadRunner的; LinkedIn LoadRunner的,LoadRunnerByTheHour; SQAForums LoadRunner的,WinRunner的)