LoginSignup
16
16

More than 5 years have passed since last update.

Redis パフォーマンス向上案 まとめ

Last updated at Posted at 2015-10-05

とりあえず簡潔にわかりきってることだけ。
ここで記載してるのはちょっと古いバージョンのRedis2.6を使った時の記録。最新情報ではないので注意。

1キーに大量のデータを入れない

簡単にスロークエリ化する。致命傷。

スロークエリを潰す。

Redisだから速いと思った? 思った? ボリューミーなデータを1万件集めてソートしたりすると数秒のクエリが誕生するよ。死ぬよ?
ということで、SLOWLOG コマンドを使って、スロークエリを特定して潰しましょう。

インスタンスを増やして、処理を分ける。

Redisはシングルスレッドである。よって、スロークエリがあると瞬殺される。
シングルスレッドならインスタンス増やして、無理やりマルチスレッドにすればいいじゃない という強攻策。

master slave化

get系コマンドでmasterが重い! だったらslave化だ!

unix domain socketで繋ぐ

当たり前だがTCPを経由しなくなるので、TCPレイヤーの負荷が大幅に減る。

pconnect化

困ったときのpconnect。ただしやり過ぎに注意。

saveを改善

可能なら、master slave で変えたほうがいい。 slaveはsaveする意味が無いので止めてもいいと思ってる。
saveが頻繁に発生するとその度にディスクIOが発生するので重くなる。但しデメリットがあるのでご利用は計画的に。
- メリットは、ディスクIOが減る。
- デメリットはトラブル発生時にバックアップが消失しデータロストする。

timeout を改善

インターバルタイムアウトを調整する。
短すぎると勝手にコネクションが切断されるので要注意。
だが長すぎても問題なので、無制限の0にするのはやめたほうがいいと思う。参考サイト:http://d.conma.me/entry/2013/03/21/114044

プロキシを通す

コネクションが大幅に減ります。pconnect化出来ない環境でオススメ。
twemproxy が流行ってるので、これを使えばいいと思う。
デメリットとしては、multiなど使用できないコマンドが多数あるので注意が必要です。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16