コラム

2021.06.02

【データ連携担当のトラブルメモ】#2. データ自動連携設定時に気を付けたいこと

● はじめに

 本シリーズでは「データ連携担当のトラブルメモ」と題して、DataCurrent社データ連携担当として携わってきた、データ連携にまつわる様々なトラブルやヒヤリ・ハットを振り返り、その原因究明のポイントや対策などを備忘録的に整理してまいります。

 非常に基礎的な内容も含まれると思いますが、それゆえにこれからデータ連携領域を担当されるという方々の一助になるようなものにできればと思います。

● 今回のデータ連携担当(プロフィール)

田中 芳樹
2008年4月に株式会社サイバー・コミュニケーションズ(CCI)入社。Google Analyticsを始めとしたアクセス解析ツールやKrux、BlueKaiなどのDMPの実装・運用領域を担務。2021年2月よりデータの利活用を推進するコンサルティング会社「株式会社DataCurrent」に出向し、事業会社の基盤構築・運用やオーディエンスデータの連携を担当。

● 第2回 自動連携で大量のエラーが……

ある日の出来事

 それは月初の朝のことでした。

「エ、エラー通知がこんなに……」

 ただでさえ仕事が立て込むこの時期に、メールボックスに届いた大量のエラー通知に目の前が暗くなりかけました。とはいえ凹んでいても状況は改善しないので、すぐにそのエラー内容を確認してみます。

 すると、どうもエラーの多くは月次の定期的な集計、定期的なデータ連携の処理で発生しているようでした。これは意外でした。なぜなら先月は何の問題もなかったのですから。

 これは原因がすぐにはわからないかもしれない、とその時は覚悟しました。

環境情報

弊社出力元: Treasure Data
集計機能: Worlflow、Saved Query、Authentications

チェックしたいこと

 とにもかくにもTreasure Dataでエラーが発生した場合、その集計処理のEngine Logsにエラー内容が記載されています。なので、真っ先にそこを確認したいところです。より具体的に言うならWorkflowのタスク結果やJobの結果画面ですね。エラーが発生したところには赤いアイコンが表示されているはずです。

 記載されているエラーの内容によって、
 ・SQLの記述の間違い
 ・取得するデータが存在しない、あるいは見に行く先の環境情報が間違っている
 ・S3、SFTPなどにデータ取得先環境にアクセスする際の権限の問題
 など、どれが原因かがわかるようになります。

原因

 で、今回はそのエラーが大量発生ということだったので、こりゃあ1つ1つ確認するのは大変だ、という状況になってしまっていたのですが、結果としてその確認はすぐに終わりました。なぜなら原因が全部共通だったからです。そしてその原因というのが、

「同時処理できるタスクの上限数をオーバーしてしまっていた」

 でした。

 Treasure Dataもある程度並列で集計を行ってくれるシステムではありますが、その時は
 ・サイトごとの日時、月次アクセスデータの取得&集計
 ・Facebookページのアクセス数やいいね数の取得&集計
 ・各サイトのGoogle Search Consoleからの検索流入データの取得&集計
 ・その他、ダッシュボードへのデータ連携など
 で割と尋常じゃない数の自動集計をセットしてしまっておりまして、しかも自動であることをいいことに全部深夜0時にスタートする設定にしていました。デフォルトで0時でセットされるのを、深く考えずにそのままにしていたというか、なんというか。

 それで何が起こるかというと、あえて説明するまでもないかもしれませんが、0時になると一気に大量の処理実行リクエストが発生するわけですね。で、同時並行で処理が進む裏で大量の「実行待ち」が一瞬にして発生してしまい、その実行待ちが一定数を超えると(この時は256でした)それ以降のリクエストは全部エラーになると、そういう事態が起きていたわけです。

 思い起こせば昨月、日次の自動集計もそこそこな数を追加してしまっていたような。それでとうとう上限に達してしまったわけですが、ツールにしたって無限に対応できるわけではない、ということですね。反省です。

対策

 同時に処理しようとしているからエラーになるわけで、うまく時間をずらすなどで工夫をしたいところです。特定の日時にどうしても集計を動かさなければいけないものを最優先にして、他の処理の開始時間は前後に分散させていくことを考えたいですね。

 また、1つ1つの処理にかかる時間も気にしておきたいです。重たいタスクがある場合はそれがきっかけに大渋滞が起こるかもしれません。可能ならば後ろの方に回すか、続く処理が始まるまでに十分なインターバルを設けたいです。

 後は、言うまでもないことかもしれませんが、不要になった自動集計はしっかり止めておくことも大事ですね。

まとめ

 自動データ連携処理をセットするときは

 1.開始時間をある1点に集中させない

 2.処理に必要な時間を踏まえて十分なインターバルを設ける

 3.不要になっている自動集計は停止させる

 ことに注意する。