02700-MM-10369 SQL統計生成処理のkafka-streamsの耐障害性の強化

■問題

トランザクション中に実行されたSQLの統計データを処理するkafka-streamsにて、内部データパイプラインの許容するメッセージサイズを超えるようなデータが生成された場合、kafka-streams自体が停止しトランザクション情報が生成されなくなる問題がありました。

 

■条件

Sheltyバージョン:2.4.0以降
条件:以下の条件を満たす場合

  • Java Agent トランザクションデータまたは、.NET Agent トランザクションデータ を取得している

  • DB呼出しが行われている

 

■原因

SQL統計は1分毎、SQLの文毎に、実行SQL情報の配列を持つ集計結果を生成します。
短期間に多量、かつ長文のSQLが実行された場合、集計結果に含まれるSQL実行情報が多量となったことで集計結果のデータサイズが肥大化し、保持するkafka-streamsのメッセージサイズが上限に達していました。この場合に例外が生じてkakfa-streamsが起動できなくなり、関連するサービスで再起動が頻繁に発生し、トランザクション情報が生成されなくなっていました。

 

■修正内容

メッセージサイズ上限に達した場合の扱いを見直し、上記の場合にも動作が継続するよう修正しました。メッセージサイズ上限に達した場合には、その時点までのSQL実行情報を当該分のSQL統計情報に含み、以降の分を無視するように修正しました。

またメッセージサイズ上限に達したメッセージが未処理のデータとして残り続けるため1時間より古いデータを破棄するように修正しました。

 

Copyright © IIM. All Rights Reserved.