Redisユーザーからレポートを受け取りました。Linuxとそのスケジューラーの分野の専門家ではないので、何を返信すればよいかわかりませんが、(Redisプロジェクトとして)この種の問題を特に把握する必要があります。将来的には、Redisクラスターと同様に、1つのボックスで多数のRedisインスタンスを同時に実行する予定です。だから私はここでいくつかの助けを求めています。
問題:
- カーネル:「Linux redis1 2.6.32-305-ec2#9-Ubuntu SMP Thu Apr 15 08:05:38 UTC 2010 x86_64 GNU / Linux」
- 十分な空きRAM、重要なI / Oを実行する他のプロセスはありません。
- 重要、実サーバーではなく、EC2ビッグインスタンスで実行します。仮想化されていない環境では、そのようなものを見たことはありません。EC2インスタンスは、「ハイメモリエクストララージインスタンス17.1 GBメモリ、6.5 ECU(3.25 EC2コンピューティングユニットを備えた2つの仮想コア)、420 GBのローカルインスタンスストレージ、64ビットプラットフォーム」でした。
基本的に、大きなRedisインスタンスを再起動すると、システムが非常に遅くなり、シェルを入力できなくなります。Redisがインスタンスをロードするとき、CPUを100%使用し(データを可能な限り高速にロードします)、dump.rdbファイルを順番に読み取ります。ロードはI / OバウンドではなくCPUバウンドであるため、I / Oはそれほど高くありません。
なぜ2つのCPUと十分なRAMを備えたディスクがディスク上にスワップされていないのに、なぜこの作業負荷で動作を停止する必要があるのでしょうか?
私は、これがEC2インスタンスであるという事実と多くの関係があるという印象を持っているので、使用されている仮想化テクノロジーに関連して、私はいつもRedis 24 GBデータセットを問題なく(他のRedisインスタンスでも)高負荷で実行)。
ヒントをありがとう!
サルバトーレ
編集:ツイッターから受け取ったフィードバックを追加します:
@ezmobiusから:@antirezの最初の操作は、/ mntまたはローカルの一時ドライブから試して、そのEBSのフレキネスを確認することです。最初にディスク全体で0をddする必要があります。
from @dvirsky:@antirezまさにそのようなec2ノードで多くのredisインスタンスを実行しています。私はbgsaveの速度低下に気づきましたが、この現象には気づきませんでした。