Amazon Redshiftで起きたトラブル事例
Mar. 9, 2017
Adways 石丸 裕史
confidential自己紹介
2© ADWAYS INC.
石丸裕史(いしまる ひろし) @Adways
データ分析ディレクター & エンジニア
最近の仕事
広告配信の分析DBチューニング(Redshift, MySQL)分析管理画面開発Excel、PowerPointで資料作り
言語等
Rails、R、Python、古いPHP、古いJava、古いFortran、古い・・・、等
confidentialRedshiftのトラブル事例の前に
3© ADWAYS INC.
導入時期 2013年6月頃
Redshiftの利用概要
Redshiftへのデータ転送で導入したツール等
Flydatafluent-plugin-redshiftシェル
利用例 アプリのログから行動解析某中規模データのデータ解析某広告サービスの配信解析
confidential
4© ADWAYS INC.
本題: Redshiftのトラブル事例
confidentialRedshiftのトラブル事例
5© ADWAYS INC.
Redshiftのメンテナンスで、エラーメール祭りになった話
1
2
3
4
Redshiftのテーブルに圧縮エンコードを付けようととして、容量不足に陥りかけた話
Interleaved Sort Keyを使ってみた結果、処理が劇的に重くなった話
Amazon Linuxでfluent-plugin-redshiftを利用したら、fluentdのプロセスがフリーズした話
confidential
6© ADWAYS INC.
Amazon Linuxでfluent-plugin-redshiftを利用したら、fluentdのプロセスがフリーズした話
confidentialシステムトラブル概要
7© ADWAYS INC.
発生時期 2015年5月末頃
WebサーバのログをRedshiftへ転送
トラブル概要
・fluentd-plugin-redshiftを利用した際に、fluentdのプロセスがフリーズした。
解決までにかかった期間 約20日
flydataからfluent-plugin-redshfitへ移行が完了した数日後に発生
confidential
S3
システム構成
8© ADWAYS INC.
EC2: ログ転送サーバ
CloudWatch
VPC
Redshift:Oregon
サービスA
Redshift データ分析
管理画面
サービスB
サービスC
・・・
confidentialトラブル詳細
9© ADWAYS INC.
フリーズして、ログすら何も出ない状態1
フリーズは必ず起こるわけではなく、いつ起きるか不明の状態
2
オンプレで1年運用した際には、同様の現象が1回も発生しなかった。
3
Google先生に聞いても返事はなかった。4
confidentialトラブル対応1
10© ADWAYS INC.
Fluentdのログレベルを変更
Trace、Debugなどのログも出るように起動スクリプトを修正して様子見
フリーズする現象なので、当然のようにフリーズして、Debugログも止まる。
confidentialトラブル対応2
11© ADWAYS INC.
Fluentdのバージョン変更
オンプレで正常稼動していたバージョンに、fluentd及び利用しているfluentd-pluginのバージョンを変更
あえなくフリーズ。バージョンは関係なさそう。
confidentialトラブル対応3
12© ADWAYS INC.
fluent-plugin-redshiftに処理を追加
Debugログを増やして、plugin内のどこでフリーズしているかを特定する
fluentd フリーズ履歴
2015-05-29 23:122015-05-31 16:102015-06-02 12:362015-06-03 00:10
・・・
confidentialトラブル対応4
13© ADWAYS INC.
create_s3pathメソッド内でフリーズ判明
メソッド内のbucket.objects[s3path].exist?が応答無し。
pluginの該当箇所に、rubyのbegin、rescue文で、例外が発生したケースは処理を飛ばすように修正
1週間以上フリーズせず、平和になったかに見えたが、再度フリーズ発生。
confidentialトラブル対応5
14© ADWAYS INC.
OSの変更
AmazonLinux → CentOS 6.5
※当時のオンプレ安定環境だったOSに変更
ついに平和が訪れた!!!
confidentialトラブル対応まとめ
15© ADWAYS INC.
原因推定
当時のAmazonLinuxとfluent-plugin-redshiftというかなり限定された範囲内で発生した事象で、詳細な原因を突き詰めるところまでは実施せず。
pluginのコードとは別に、S3へのアクセス処理を追加して検証した際に、その処理でもフリーズしたことから、当時のAmazonLinuxからの通信処理の問題だったと推定している。
confidentialRedshiftの運用事例
16© ADWAYS INC.
ノード追加の話1
2
3
4
新アカウントへRedshiftを移行した話
Analyze Compression、Vacuumとかした時に、ロックとか実行時間ってどうなるの?って話
Redshiftの管理系コマンドの話