监控工具&自动Java性能测试期间记录系统指标

时间:2015-06-01 09:01:13

标签: java performance automation monitoring

我们有一个使用Spring Integration的应用程序,并创建了性能测试,以查看不同生成的输入类型的处理速度(msgs / sec)。

此过程是自动进行的,因此无论何时运行此类测试,都会在云中创建一个单独的实例,并在完成后进行处理。输出的人工制品被复制。

我想要做的是在运行期间监控基本系统指标的性能测试 - CPU,内存,I / O,GC运行/时间。显然,结果应该是一些带有指标读数的CSV文件(例如,每秒一次或两次)。

所以我的问题是:是否有用于这些目的的好的和可配置的工具?

我正在调查中,但到目前为止我审查的分析工具主要需要人工交互,并且面向用户界面。

我正在考虑的一个选项是编写一个单独的工具来访问MXBean&在性能测试期间使用它来记录这些数据。只是想知道周围是否有什么好处。

请注意,此应用程序在Tomcat中运行,但是对于性能测试,我们仅使用Spring Integration的文件端点。

请注意,应用程序中的“可切换”组件也是可能的解决方案。但是,我目前正在寻找与应用程序无关的外部工具 - 第一个解决方案。

2 个答案:

答案 0 :(得分:2)

命令行工具可以帮助实现这种情况:

在基于 Linux / Solaris 的环境中:

  1. 在为基于Spring的应用程序运行/触发JVM之前,您可以在后台模式下运行vmstatsar等工具,并将其输出重定向到平面文件 - 这有助于捕获CPU,内存和其他此类统计数据。如果您遇到性能问题,请使用top选项或mpstat获取线程级统计信息,以进行瓶颈分析。
  2. 现在使用printgc-Xloggc之类的参数运行JVM,将JVM详细输出写入平面文件或打印gc statictics。在Java HotSpot VM Options中查看JVM参数的Debugging options部分,了解您需要的更多选项。
  3. 提示:创建一个shell脚本,将上述两个命令组合在一起,同时运行并满足您的要求。

    Windows 环境中:

    1. 对于在命令行上收集的OS统计信息,您可以使用typeperf或tracerpt(支持CSV)。
    2. 现在使用printgc-Xloggc之类的参数运行JVM,将JVM详细输出写入平面文件或打印gc statictics。在Java HotSpot VM Options中查看JVM参数的Debugging options部分,了解您需要的更多选项。

答案 1 :(得分:1)

Jmeter是开发性能和可伸缩性测试(定义http请求并能够使用它们加载服务器)的工具,但也有一个插件,允许监视目标系统的系统指标,如CPU利用率,内存使用情况等以及JMX类型统计:

  

可用的JMX指标类型:

     

gc-time - 垃圾收集所花费的时间,毫秒(使用的方法)   内存使用 - VM使用的堆内存,字节(使用的方法)   memory-committed - VM提交的堆内存,字节(使用的方法)   memorypool-usage - 堆内存池使用情况,字节数(使用的方法)   memorypool-committed - 堆内存池提交的大小,字节(使用的方法)   class-count - VM中加载的类计数(使用的方法)   编译时 - 在编译中花费的时间,毫秒(使用的方法)"

检查http://jmeter-plugins.org/wiki/PerfMonMetrics/以获取此插件的更多详细信息。