はじめに
MotionBoardで全期間のデータを表示し、その直後にExcelレポートを一括出力したところ、社内ネットワーク全体の通信が重くなる事象が発生しました。
本記事では、今回の事象と原因を整理し、再発防止策として以下の内容をまとめます。
- 利用者側の運用ルール
- MotionBoardのデータしきい値設定
- 検索条件の初期値見直し
- ダウンロード権限の見直し
- 通信量やサーバー負荷の監視
本記事は実際に発生した事象をもとに、環境固有の名称や情報を一部変更しています。
設定項目や画面構成は、利用しているMotionBoardのバージョンや接続先によって異なる場合があります。
⸻
発生した事象
次の操作を短時間に連続して実施しました。
- 「入出荷年月」の検索条件を「すべて」に設定
- 全期間のデータをボード上に表示
- Excelレポート機能で大量データを一括出力
- 生成されたExcelファイルをダウンロード
その結果、MotionBoardに関連する大量のデータ処理と通信が発生し、社内ネットワーク全体の通信速度が低下しました。
⸻
原因
原因を、操作・運用・システムの3つの観点で整理します。
- 期間を絞らずにデータを取得した
検索条件を「すべて」にしたことで、通常業務では必要としない過去分を含め、全期間のデータが取得対象になりました。
データ量が多いボードでは、画面を表示するだけでも次の処理が発生します。
- 接続先データベースへの問い合わせ
- データの取得
- 集計処理
- チャートや明細表の生成
- ブラウザーへのデータ転送
⸻
- ボード表示とExcel出力が重なった
全期間データをボード上に表示した直後に、Excelレポートを出力しました。
そのため、次の処理が短時間に重なりました。
- ボード表示用データの取得
- チャートや明細表の集計
- Excelレポート用データの取得
- Excelファイルの生成
- Excelファイルのダウンロード
ボード表示とレポート出力を別々に行う場合よりも、一時的な処理負荷と通信量が大きくなったと考えられます。
⸻
- 大量データ操作のルールがなかった
利用者に対して、次の事項が明確に周知されていませんでした。
- 「すべて」を使用してよい条件
- 一度に取得してよい期間
- Excel出力時の注意事項
- 大量データ作業時の事前連絡
- 全期間データが必要な場合の相談先
操作自体は実行できる状態だったため、利用者が処理負荷を判断しにくい状況でした。
⸻
- システム側の制限が十分ではなかった
大量データを取得しようとした際に、警告を表示する、取得件数を制限する、処理を中止するといった設定が十分に適用されていませんでした。
確認が必要な設定には、次のようなものがあります。
- 外部接続のデータしきい値
- Excelレポート出力時の明細データしきい値
- 検索条件の初期値
- データダウンロード権限
- 通信量やサーバー負荷の監視
⸻
再発防止の基本方針
今回の再発防止では、利用者への注意喚起だけに依存せず、次の3段階で対策します。
- 利用者が大量データの一括取得を避ける
- MotionBoard側で取得件数を制限する
- 異常な負荷を監視して早期に検知する
利用者の操作だけに任せるのではなく、誤操作が発生しても大きな影響につながりにくい構成を目指します。
⸻
利用者側の運用ルール
ルール1:「すべて」での表示・出力は原則禁止
期間フィルタを「すべて」にした状態で、次の操作を行うことは原則禁止とします。
- ボードの全期間表示
- 明細データの全件表示
- チャートデータの一括ダウンロード
- Excelレポートの一括出力
全期間データが必要な場合は、事前にMotionBoard管理者または情報システム部門へ相談します。
⸻
ルール2:必要な期間だけを指定する
データを表示・出力する場合は、対象期間を必要最小限に絞ります。
指定例は次のとおりです。
- 当月
- 前月
- 直近1か月
- 四半期単位
- 直近1年以内
- 月単位または年度単位
複数年分のデータが必要な場合でも、一度に全期間を取得せず、期間を分割して処理します。
⸻
ルール3:ボード表示とExcel出力を連続して行わない
大量データを表示した直後に、そのままExcel出力を行わないようにします。
次の流れで作業します。
- 期間を絞ってボードを表示する
- 表示件数や検索条件を確認する
- 不要な項目やデータを除外する
- 必要な範囲だけExcel出力する
- 追加データが必要な場合は期間を分けて出力する
⸻
ルール4:大量データ作業は事前に共有する
通常より多くのデータを取得する必要がある場合は、事前に関係者へ共有します。
共有する内容の例です。
項目 内容
作業目的 なぜ大量データが必要なのか
対象ボード 操作するボード名
対象期間 取得予定の期間
想定件数 おおよその取得件数
作業日時 実施予定日時
出力方法 画面表示、Excel、CSVなど
分割可否 月単位などに分割できるか
業務上可能であれば、利用者の少ない時間帯に実施します。
⸻
MotionBoard側で実施する対策
- 外部接続の「データしきい値」を設定する
MotionBoardには、外部接続設定ごとに、データ取得時や検索時に扱えるデータ件数を制限する「データしきい値」があります。
設定画面は、次の経路から確認します。
管理
└ システム設定
└ 接続/認証
└ 外部接続
└ データしきい値
主な確認対象は次のとおりです。
- 対象データの最大総件数
- 警告を表示する件数
- 最大集計行数
- 最大集計列数
- 最大集計ポイント数
- 明細表で扱える件数
- 検索候補として扱える件数
- 最大表示件数
- Fetchサイズ
設定できる項目は、接続先のデータソースによって異なる場合があります。
⸻
- 「警告」と「取得を停止する上限」を使い分ける
データしきい値には、警告を表示する設定と、上限超過時にエラーとして処理を停止する設定があります。
警告
設定件数を超えた場合に、利用者へ確認メッセージを表示します。
環境や操作内容によっては、利用者が確認後に取得を続行できる場合があります。
そのため、警告だけでは大量データ取得を完全に防げない可能性があります。
最大集計
設定した最大行数・列数・ポイント数を超えた場合、エラーとしてデータを表示しないための設定です。
大量データの取得を確実に止める必要がある場合は、警告だけでなく、最大集計などの上限設定も確認します。
対象データの最大総件数
取得対象となるテーブルやビューのデータ件数を、取得前に確認するための設定です。
件数の多いデータソースへのアクセス自体を制限したい場合は、この設定についても確認します。
⸻
- Excelレポート出力時のしきい値を設定する
外部接続のデータしきい値とは別に、MotionBoardにはExcelレポート出力時の明細データしきい値があります。
このしきい値はアイテム単位で適用されるため、Excelレポート内に複数のアイテムが配置されている場合は、それぞれの出力件数を確認します。
確認する内容は次のとおりです。
- Excelレポートで出力可能な最大明細件数
- しきい値を超えた場合の動作
- 複数アイテムを配置した場合の適用単位
- 手動出力時の動作
- 定期配信やタスク実行時の動作
- 既存のExcelレポートへの影響
外部接続のデータしきい値だけでは、Excelレポートの出力件数を十分に制御できない可能性があります。
反対に、Excelレポートのしきい値だけでは、ボード表示時の大量データ取得を防げません。
そのため、次の2つを分けて確認します。
設定 主な対象
外部接続のデータしきい値 ボード表示、集計、明細取得、検索など
Excelレポートの明細データしきい値 Excelレポートの明細出力
⸻
- 検索条件の初期値を変更する
「入出荷年月」などの期間フィルタについて、初期値が「すべて」になっている場合は変更を検討します。
初期値の候補です。
- 当月
- 前月
- 直近1か月
- 直近3か月
- 直近1年
利用者がボードを開いた時点で全期間データを取得しない構成にすることで、意図しない大量処理を防ぎやすくなります。
可能であれば、次の制御も検討します。
- 「すべて」を選択肢から削除する
- 長期間を指定した場合に注意文を表示する
- 検索条件を指定するまでデータを取得しない
- 年月などの検索条件を必須にする
⸻
- ダウンロード権限を見直す
チャートデータやExcelレポートのダウンロード権限が、業務上必要な利用者だけに付与されているか確認します。
確認事項です。
- 全利用者にダウンロード権限が付与されていないか
- 閲覧だけでよい利用者に出力権限が付いていないか
- 管理者権限が過剰に付与されていないか
- 異動者や退職者の権限が残っていないか
- 定期的な権限棚卸しが行われているか
ただし、権限を持つ利用者による大量取得は、権限設定だけでは防げません。
権限設定とデータしきい値を組み合わせて対策します。
⸻
- 通信量やサーバー負荷を監視する
情報システム部門と連携し、MotionBoard関連の通信量やサーバー負荷を監視できるか確認します。
監視対象の例です。
- MotionBoardサーバーのCPU使用率
- メモリ使用率
- ネットワーク送受信量
- 接続先データベースの負荷
- クエリ実行時間
- 同時接続数
- Excelレポートの生成時間
- ファイルダウンロード量
- エラーログ
- しきい値超過の発生回数
一定値を超えた場合に、情報システム部門やMotionBoard管理者へ通知する仕組みを検討します。
⸻
設定後の動作確認
しきい値を設定した後は、設定値を保存するだけで終わらせず、実際の操作で制限が適用されることを確認します。
No. 操作 確認内容
1 直近1か月を指定してボードを表示 通常どおり表示できること
2 直近1年を指定してボードを表示 業務上許容できる時間で表示できること
3 「すべて」でボードを表示 警告または上限エラーの動作
4 大量データを含む明細表を表示 明細取得件数が制限されること
5 チャートデータをダウンロード ダウンロード時の制限が適用されること
6 Excelレポートを出力 レポート用のしきい値が適用されること
7 上限を超えるExcelレポートを出力 エラー内容と処理停止を確認すること
8 複数利用者が同時に操作 サーバーとネットワークの負荷状況
特に、警告が表示された後に利用者が処理を続行できるか、上限を超えた際にデータ取得が停止するかを確認します。
⸻
利用者向けチェックリスト
MotionBoardでデータを表示・出力する前に、次の項目を確認します。
- 期間フィルタが「すべて」になっていない
- 必要以上に長い期間を指定していない
- 月単位や年度単位に分割できないか確認した
- 不要な項目やデータを含めていない
- ボード表示とExcel出力を連続して実施しようとしていない
- 大量データ作業について関係者へ共有した
- 全期間取得が必要な場合は管理者へ相談した
- 利用者の少ない時間帯に実施できるか確認した
⸻
まとめ
今回の事象では、次の操作が短時間に重なりました。
- 期間を「すべて」に設定
- 全期間データをボード上に表示
- Excelレポートを一括出力
- 大容量ファイルをダウンロード
再発を防ぐためには、利用者への注意喚起だけでなく、次の対策を組み合わせる必要があります。
- 期間を必要最小限に絞る運用ルール
- 大量データ作業の事前共有
- 外部接続のデータしきい値設定
- Excelレポート出力時のしきい値設定
- 検索条件の初期値変更
- ダウンロード権限の適正化
- 通信量やサーバー負荷の監視
特に、外部接続のデータしきい値と、Excelレポート出力時のしきい値は、対象となる処理が異なります。
また、警告を表示するだけでは、利用者が処理を続行できる場合があります。大量取得を止める必要がある場合は、最大集計などの上限設定が実際に適用されることを確認します。
利用者側の運用とシステム側の制御を組み合わせ、誤操作が発生しても影響が広がりにくい構成にすることが重要です。
⸻
参考資料
- WingArc1st「[外部接続]画面-[データしきい値]タブ」
- WingArc1st「[全般]画面」
- 利用しているバージョンのMotionBoard公式マニュアル