技術情報HOME技術情報ブログRedisのmaxmemoryについてRedisのmaxmemoryについてRedisのmaxmemoryについてこんにちは。見習いエンジニアの下地です。前回記事ではReidsをインストールと起動までご紹介しました。今回はインストールしたReidsを使って、maxmemoryの設定について検証をします。この設定ファイルにて、Redisに関する様々なパラメタを設定することができるのですが、その中の1つがmaxmemoryです。このパラメタで、Redisが使用できるメモリを制限することができます。してこのパラメタが重要なのかRedisはオンメモリデータベースなので、データ量が大きいとメモリを消費します。Killerがやってきてプロセスを落としてしまい、Redisがダウンする可能性があります。したがって、メモリ管理のためにも、maxmemoryを事前に設定することでRedisのメモリ使用量を制限します。どのくらいの値を設定すればよいかRedisの公式ページを見ると、以下のような記述がありました。accordingly.「重いアプリを動かす場合、RDBファイルの保存やAOFログの書き換えにより、通常使用されるメモリの2倍まで使用することがあります」とのことです。従って、実メモリの半分程度をmaxmemoryに設定すれば大丈夫でしょう。maxmemoryを設定するでは実際に設定してみます。実メモリの半分程度ということなので、まずマシンのメモリ容量を確認します。1.7Gメインメモリは1.8GBでした。従ってmaxmemoryの値は900MBとします。設定は、/etc/redis.confにmaxmemoryとmaxmemory-policyを記載します。maxmemoryがメモリ使用量の閾値で、maxmemory-policyは閾値を超えた場合の振る舞いです。noevictionmaxmemory-policyがnoevictionの場合、Redisがmaxmemoryの値までメモリを使用すると、書き込み時にエラーを返すようになります。これでRedisを再起動して設定を反映させます。maxmemoryの動作確認をしてみる設定方法は分かりましたので、閾値を超えると本当に書き込みエラーが出るか確認してみます。動作確認のため簡単なシェルスクリプトを作成します。$countdoneこれはDBに次々データを入れて、同時にカウントを表示するだけのスクリプトです。次に、先ほど設定したmaxmemoryを1mbに変更します。先の手順で900mbに設定しましたが、検証だとデータ挿入でmaxmemoryに達するのに時間がかかるので、一時的に1mbにしてみました。スクリプトを実行してみましょう。'maxmemory'.3953最初は問題なくデータを書き込めていますが、3950回目の書き込みからmaxmemroyの閾値に引っかかりちゃんと書き込みエラーとなりました。このようにRedisは、メモリ使いすぎでRedis自身が停止したり、他のミドルウェアに悪影響を与えないよう適切なチューニングをすると良いと感じています。実験後はまたmaxmemoryの値を900mbに戻しておきましょう。今回もお読み頂きありがとうございました。BalancerのLoadBalancerNameの説明がよく分からない。その1)Gitのクライアント側で、リモートのmaster,developヘのpushを阻止する。■お手軽な冗長構成の構築NRPEを利用した踏み台サーバ経由の監視Windows7環境にLinuxコマンド環境を作ってみた。#2EC2サーバのトラフィックをレスポンシブに見る方法NginxのチューニングとFastCGIcacheの設定Ghostを利用してみた。WrodPressを動かそうGHOSTをインストールしてみた。FAX:06-6231-8897認証範囲はこちらをご覧ください。