Help us understand the problem. What is going on with this article?

Redisサーバーでやらかした&容量削減に挑んでみた

はじめに

大学を卒業し、エンジニアになってから二年半ほどが経ちました。
サーバーエンジニアとして仕事をしてきて、
まぁまぁやらかして
まぁまぁ大変だったRedisの話をしようと思います。

やらかし

スレーブ遅延をおこしました
アクセス障害:(´◦_◦`):

はい。

redis-cli keys "*"

なにをしたか

本番のスレーブサーバで、keysをたたきました。
keysは登録されているキーの一覧を取得するコマンドです。
本番のサービスを運用中にこれをやると、キーの数が多すぎて遅延を起こしてしまいます。

きっとその時はこんな軽い気持ちで叩いたに違いない

  1. お問合せの調査で、とあるランキングをみたいなぁ
  2. ランキングはRedisか、キーがわからん
  3. 開発サーバーだとキー名ちょっと違うしどうしよう
  4. スレーブならKeys叩いても大丈夫か

そう、こんな感じです。

ダメです。ちなみに二回くらいやりました。すみませんでした。

どうしたの?

それからは、キーの調査はこのようにやってます

  • 開発サーバーで似たキーを探す
redis-cli keys "*SeasonEvent*"
  • 本番サーバー固有の文字列があれば、それを確認する
redis-cli scan 0

とか

redis-cli monitor
  • こうすればkeysをたたかなくてもキーを特定できる!!

  • あとは特定したキーでランキングの中身をみるだけ!

容量削減

発生した問題

Redisサーバー仕様メモリ容量がいっぱいになってきた

なにをしたか

不要なキーを洗い出して、削除した
一定期間が過ぎると不要になるデータを消込するBatchを作成した
ソース内で、TTLの効果時間を設定してるとこを短くした

  • 不要なキーとは?

過去のランキングイベントのデータ
一時的なランキングのデータ
一時的なキャッシュデータ
など...

調査方法

モニターで確認してみる

redis-cli monitor

スキャンで見てみる

redis-cli scan 0

TTLが効いてるか見てみる

redis-cli ttl key名

最終的には、メンテナンス中に全部のキーリストをTextファイルに書き出しました。
個人的には、書き出したあとSCPコマンドで開発サーバーや自分のローカルに落としてきて、サーバーには残さないのが良いと思います。

結論

不要なデータが残ってないか、どう減らすか、残さないか、につきると思います。
開発したときに、将来ごみになりそうだから消込用のBatchを作っておこう。
といった気づかいができると、僕のような新人や後輩が悩むことがなくなると思います。

おまけ

redis-cli keys "*" > /tmp/redisKeys.txt
scp [オプション] コピー元 コピー先

結局これでローカルで見るのが一番楽でした。(すべて確認できるので)

kakkyo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした