我们有一个使用Spring Integration的应用程序,并创建了性能测试,以查看不同生成的输入类型的处理速度(msgs / sec)。
此过程是自动进行的,因此无论何时运行此类测试,都会在云中创建一个单独的实例,并在完成后进行处理。输出的人工制品被复制。
我想要做的是在运行期间监控基本系统指标的性能测试 - CPU,内存,I / O,GC运行/时间。显然,结果应该是一些带有指标读数的CSV文件(例如,每秒一次或两次)。
所以我的问题是:是否有用于这些目的的好的和可配置的工具?
我正在调查中,但到目前为止我审查的分析工具主要需要人工交互,并且面向用户界面。
我正在考虑的一个选项是编写一个单独的工具来访问MXBean&在性能测试期间使用它来记录这些数据。只是想知道周围是否有什么好处。
请注意,此应用程序在Tomcat中运行,但是对于性能测试,我们仅使用Spring Integration的文件端点。
请注意,应用程序中的“可切换”组件也是可能的解决方案。但是,我目前正在寻找与应用程序无关的外部工具 - 第一个解决方案。
答案 0 :(得分:2)
命令行工具可以帮助实现这种情况:
在基于 Linux / Solaris 的环境中:
vmstat
,sar
等工具,并将其输出重定向到平面文件 - 这有助于捕获CPU,内存和其他此类统计数据。如果您遇到性能问题,请使用top
选项或mpstat
获取线程级统计信息,以进行瓶颈分析。printgc
,-Xloggc
之类的参数运行JVM,将JVM详细输出写入平面文件或打印gc statictics。在Java HotSpot VM Options中查看JVM参数的Debugging options部分,了解您需要的更多选项。提示:创建一个shell脚本,将上述两个命令组合在一起,同时运行并满足您的要求。
在 Windows 环境中:
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/以获取此插件的更多详细信息。