web-dev-qa-db-ja.com

一部のLinuxシステムは、Redisが大きなデータセットをロードしているときに非常に遅くなります

Redisユーザーからレポートを受け取りました。私はLinuxとそのスケジューラーの分野の専門家ではないため、何に返信すればよいかわかりませんが、(Redisプロジェクトとして)特にこの種の問題を把握する必要があります。将来的には、Redis Clusterと同様に、1つのボックスで同時に多数のRedisインスタンスを実行する予定です。だから私はここでいくつかの助けを求めています。

問題:

  • カーネル:「Linuxredis1 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.1GBメモリ、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の他のインスタンスでも)。

ヒントをありがとう!

サルヴァトーレ

編集:Twitterから受け取ったフィードバックを追加:

@ezmobiusから:@antirez最初に行うことは、/ mntまたはローカルのエフェメラルドライブから試して、EBSの不安定さを確認することです。次に、「最初の書き込みペナルティ」(google it)ではないことを確認します。最初にディスク全体で0をddする必要があります。

@dvirskyから:@antirezまさにそのようなec2ノードで多くのredisインスタンスを実行しています。 bgsaveの速度低下に気づきましたが、この現象は見られません。

14
antirez

'top'からの出力は、いくつかの手がかりを生み出す可能性があります。左上近くに「%stolen」というラベルの付いたフィールドがあり、同じ物理ボックス上の他のゲストに転送されたハードウェアCPUの量を反映しています。ハイパーバイザーが別のゲストにより多くのCPUを割り当てることを決定した場合、特に長時間実行されるCPUを集中的に使用するタスクを実行している場合は、このような速度低下が見られます。

それがあなたの問題かどうかはわかりませんが、確認する価値があります。

4
Kevin Smith

EC2インスタンスでも同じ問題が発生しました。おそらくRedisとは関係ありません-高いIOが発生している場合(たとえば、redisがダンプファイルをロードしている場合)に発生します。

アマゾンフォーラムでこのスレッドを見てください: https://forums.aws.Amazon.com/thread.jspa?messageID=215406

さまざまなカーネル/イメージを試しましたが、正常に動作するようになりました(古い2.6.21カーネルで)。

2
Marek

CPUスチールをチェックする必要があります(xx.x%st cpu行の右側)topは、100%の負荷とフリーズしたシェルが発生したときに表示されます。スティールは、実際のCPUサイクルのどれだけがハイパーバイザーによってマシンから盗まれ、別のマシンに渡されるかを表します。 CPUスティールは、仮想化環境にのみ関係します。マイクロインスタンスでその正確な問題が発生し、CPUを集中的に使用するタスクを実行すると、基本的にインスタンスが約1時間(タスクが終了するまで)使用できなくなりました。

このトピックの詳細については、 Greg's Ramblingsに関するこの投稿 を参照してください。ただし、Greg's Wordを使用する場合、これはマイクロインスタンスでのみ発生するはずです。

2
Shinnok