考虑一个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)在选定时间段(例如,日,周,月,年)中每个时间单位(秒,小时,日,周,月)的消息频率
感谢您提供有关自己经验的任何提示或报告。
答案 0 :(得分:0)
我们在splunk上获得了很多成功,可以处理/报告大型日志文件。它是专门为此目的而构建的工具。您可以对数据文件运行类似SQL的查询,以获取您要查找的报告/图形。我相信它可能相当昂贵,但IIRC会根据您处理的数据量向您收取费用。