0

考虑一个接收金融交易交易的 Java 应用程序,通过应用多项检查来确定其价值,例如该交易是否在合同和法律约束下被允许。该应用程序实现了一个 JMS 消息处理程序以在一个队列上接收消息,并实现第二个队列以将消息发送回消费者。

为了测量响应时间并启用后处理性能分析,应用程序记录几个步骤的开始和结束时间,例如接收消息、处理、准备和将答案发送回客户端。大约有。应用程序每天收到 300 万条消息,因此是这个时间测量数量的倍数(每天大约 1800 万条记录的测量)。每个测量包含以下数据:测量的 ID(例如 RECEIVE_START/END、PROCESS_START/END、SEND_START/END)、java.lang.system.nanoTime() 给出的时间戳、唯一的消息 ID。时间测量被发送到日志文件。

为了找到处理时间,日志文件每天都会被转换并存储在 MySQL 数据库中。这是通过一系列 Python 脚本完成的,这些脚本获取原始日志数据、转换并将其存储到 MySQL 表中,其中每条记录对应一个处理过的消息,每个测量值在一列中(即表按唯一消息对记录进行分组ID)。

我的问题是:分析这个相对较大的数据集(考虑一个月或几个月的日志数据)的最佳策略和工具是什么?特别是我想计算和绘制:

a) 在选定的时间范围内(例如每月、每天、每小时),按照响应时间(例如 SEND_END - RECEIVE_START)的测量分布。
b) 在选定时间段(例如日、周、月、年)内每个时间单位(秒、小时、日、周、月)的消息频率

任何关于您自己经验的提示或报告都将受到赞赏。

4

1 回答 1

0

我们在 splunk 处理/报告大型日志文件方面取得了很大成功。它是专门为此目的而构建的工具。您可以对数据文件运行类似 SQL 的查询,以获得您正在寻找的报告/图表类型。我相信它可能会非常昂贵,IIRC 他们会根据您处理的数据量向您收费。

http://www.splunk.com/?r=header

于 2013-02-21T17:46:17.893 回答