获取我的引擎活动的统计数据

时间:2010-10-10 10:19:33

标签: java statistics

我的一个应用程序是执行一些复杂计算的引擎。这些计算可能需要几个小时。我想知道这个引擎的活动。

如果您使用的是H udson CI server,则Administration > Usages statistics选项中会出现此类功能。这是一个例子:

alt text

在我的应用程序中,我已经有一个返回计算次数的函数。所以我的想法是定期调用此方法,例如每10分钟(使用Quartz),以便检索正在运行的计算的数量并将其存储在int[]中。每天,此int[]都存储在外部文件中,并进行清理。所以几天后,这个文件的内容将如下所示:

data.20101008=1;2;1;0;1;1;0;0;0;0;....;0
data.20101009=1;0;1;1;0;0;0;0;3;2;....;0
data.20101010=1;2;1;0;1;1;2;3;4;4;....;2
...

(我简化了一点这个处理,因为我想更频繁地更新这个文件,如果发动机关闭,或类似的东西)

总而言之,我的想法是在properties文件中存储特定日期的运行计算次数。最后,我可以提供一个将此数据作为Map<Date, int[]>返回的函数。

最后,我将使用JFreeChart以图形

显示这些数据

您如何看待这个想法?有什么建议来加强这个过程吗?

请注意,此功能是很好的功能,因此我不想构建过于复杂的系统。

我正在使用Java 6.

2 个答案:

答案 0 :(得分:2)

对于人工操作员进行简单的临时监控,您只需使用JMX即可。使用JConsole(随JDK一起提供),您可以连接到正在运行的java进程,它可以很好地显示CPU和内存使用情况,活动线程数等等。使用MBean,您可以通过JMX公开当前值,并使用JConsole对它们进行图表处理(当然它已连接)。

答案 1 :(得分:1)

可以考虑使用像RRDTool这样的RRD4J Java实现,而不是属性文件和JFreeChart。来自RRDTool网站:

  

RRDtool是用于时间序列数据的OpenSource行业标准,高性能数据记录和图形系统。