St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

【Redis】Redashがredisのメモリ不足で落ちた

こんにちは。

Redashが吐き出したエラー

会社でRedashを使っているのですが、こいつがクエリを叩くたびに以下のようなエラーを出すようになりました。

Error running query: failed communicating with server. Please check your Internet connection and try again.

別にInternetのコネクションが悪いわけでもないので、色々調べてみることにしました。今回は、redisのメモリが少ないことで落ちていそうだったので*1、メモリを増やすと今の倍くらいお金かかっちゃうし*2、一旦redisの中身を一通り削除してみることにしました*3

redisをEC2から使う

今、Redashを弊社は自前でAWSでホスティングしています。AWSのElastiCacheのredisを使っていますので、そこに踏み台からアクセスをまずはします。

redisのインストール

EC2のインスタンスは、Amazon Linuxを使っていたので、以下のコマンドでredisをインストールします。

$ sudo yum --enablerepo=epel install redis
EC2からredisへの接続
$ redis-cli -h <host_name> -p 6379 
keyの確認
$ keys *
メモリ使用量の確認

以下のコマンドでメモリ使用量を確認できます。

$ redis-cli -h <host_name> -p 6379 info memory

結果としては、以下のような感じで出てきます*4

# Memory
used_memory:xxxxxxxx
used_memory_human:x.xxM
used_memory_rss:xxxxxxxx
used_memory_peak:xxxxxxxx
used_memory_peak_human:x.xxG
used_memory_lua:xxxxxxxx
mem_fragmentation_ratio:x.xx
mem_allocator:xxxxxxxxx

ここで、数値を確認したら、削除に入ります。

全てのキーのデータを削除する

以下のような感じで全部消せます

$ redis-cli KEYS "*" | xargs redis-cli DEL

確認

先ほどの、メモリ使用量に関するInfoを表示して、メモリの使用量が減っていることを確認して、減っていればOKです。Redashのアプリ自体はECSで動かしているのですが、削除後は、ECSの再起動が必要でした。

*1:残り1 MBくらいしかなかった

*2:あくまで社内ツールなのでお金をかけたくなく

*3:キャッシュだし、社内ツールだし

*4:xに何かしらの値が入ります