取引が契約上および法的制約の下で許可されているかどうかなど、いくつかのチェックを適用することにより、金融取引トランザクションを受信してその妥当性を判断する Java アプリケーションを考えてみましょう。アプリケーションは、JMS メッセージ ハンドラを実装して 1 つのキューでメッセージを受信し、2 つ目のキューでメッセージをコンシューマに送り返します。
応答時間を測定し、処理後のパフォーマンス分析を有効にするために、アプリケーションは、メッセージの受信、処理、準備、クライアントへの応答など、いくつかのステップの開始時刻と終了時刻をログに記録します。約あります。1 日あたり 300 万件のメッセージがアプリケーションによって受信されるため、この時間測定数の倍数になります (1 日あたり約 1800 万件の測定値が記録されます)。各測定値は次のデータで構成されます: 測定の ID (例: RECEIVE_START/END、PROCESS_START/END、SEND_START/END)、java.lang.system.nanoTime() で指定されたタイムスタンプ、一意のメッセージ ID。時間測定値はログ ファイルに送信されます。
処理時間を確認するために、ログ ファイルが変換され、MySQL データベースに毎日保存されます。これは、生のログ データを取得し、変換して MySQL テーブルに格納する一連の Python スクリプトによって行われます。これにより、各レコードは 1 つの処理されたメッセージに対応し、各測定値は 1 つの列に表示されます (つまり、テーブルは一意のメッセージによってレコードをグループ化します)。 ID)。
私の質問は次のとおりです。この比較的大きなデータ セット (1 か月または数か月分のログ データを考慮してください) を分析するための最良の戦術とツールは何ですか? 特に、計算してグラフにしたいと思います。
a) 選択した時間枠 (例: 月単位、日単位、時間単位) の応答時間 (例: SEND_END - RECEIVE_START) に関する測定値の分布。
b) 選択した期間 (例: 日、週、月、年) における時間単位 (秒、時間、日、週、月) ごとのメッセージの頻度
あなた自身の経験に関するヒントやレポートは大歓迎です。