【現象】
AnomalyAnalyzer によって、以下のようなログ出力が行われる場合があります。
・AnomalyAnalyzer Resin|Http|Request Time WARNING
・AnomalyAnalyzer Resin|Thread|Thread Active Count WARNING
・AnomalyAnalyzer Resin|Database|Connection Active WARNING
・AnomalyAnalyzer Resin|Http|5xx WARNING
etc
これらは、運用中の統計情報に基づいて、異常値が検出された場合にログに出力されるものです。
【解説】
AnomalyAnalyzerの出力に関する設定は <%RESIN_HOME%>/conf/health.xml で行います。
設定内容の説明は以下です。
https://document.intra-mart.jp/library/iap/public/configuration/im_configuration_reference/texts/resin/health/health-meters/index.html
ログに出力される各値については以下のようになります。
AnomalyAnalyzer (1) WARNING
(2) sample is (3)% of (4)avg, (5) std deviations (std=(6), n=(7))
(1)統計情報の種類
(2)今回検出された値
(3)検出された値が平均値に対して何%なのか
(4)平均値
(5)検出された値が標準偏差に対して何倍なのか
(6)標準偏差
(7)平均値および標準偏差を計算するために利用したサンプル数
以下の式が成り立ちます。
(6)×(5)+(4)=(2)
(4)×(3)÷ 100 =(2)
(例)
AnomalyAnalyzer Resin|Http|Request Time WARNING
54.636 sample is 13030.26% of 0.419 avg, 8.255 std deviations (std=6.568, n=3074.0)
まず、異常値と検出された統計情報の種類はリクエスト処理時間です。
今回、検出された 54.636ミリ秒 は これまでのリクエスト処理時間の平均が 0.419ミリ秒 に対して、13030.26%となっています。
また、標準偏差の8.255倍となっているため異常値としてログに出力されています。
デフォルトでは、検出された値が標準偏差の5倍以上となった場合に、ログが出力されます。
統計学上の一般的な標準偏差の指標は以下のようなになります。
検出された値が平均値± 標準偏差の範囲に入る確率は約68%
検出された値が平均値±(標準偏差×2)の範囲に入る確率は約95%
検出された値が平均値±(標準偏差×3)の範囲に入る確率は約99%
上記からも分かるように標準偏差の5倍以上「平均値±(標準偏差×5)」はかなり確率の低い値となります。
ただし、平均値や標準偏差が十分なサンプル数を元に計算されている必要があります。
【対応方法】
まず、AnomalyAnalyzerのログが出力されたからといって、かならずしも、異常であるとは限りません。
例えば、リクエスト処理時間で見た場合
処理の軽いリクエストが続いていると、平均値は徐々に小さくなります。
そこに、処理の重いリクエストが行われた場合、平均値より大きな乖離が発生し、ログが出力されます。
この処理の重いリクエストの処理時間の妥当性については確認する必要はありますが
一時的にAnomalyAnalyzerのログが出力された場合は、特に気にする必要はありません。
また、起動後、リクエストを開始した時は一時的に出力される場合があります。
これは、統計情報を計算するためのサンプル数が少ないために、統計情報が妥当な値となっていない場合があるからです。
ただし、AnomalyAnalyzerのログが継続的に出力される場合は、システムに何らかの負荷がかかっている事になりますので
各種ログを確認して、原因を調査してみる必要があります。
-- 対象 -------------------------------------------------------------------------
iAP/Accel Platform/全アップデート
--------------------------------------------------------------------------------
FAQID:1170