2013-03-11 61 views
42

私はAmazon RDSインスタンスを持っています。メモリの空き容量は、セットアップ後1〜2週間で15GBのメモリから約250MBまで減少しています。最後の日にこの値が低下したため、フリーメモリがこの範囲(250〜350MB)に落ち込んだ後、500〜600MBの鋸歯状パターンに戻って鋸歯模様に似ています。Amazon RDSの空きメモリが不足しています。私は心配すべきですか?

アプリケーションの品質に著しい低下はありませんでした。しかし、私はDBのメモリが不足し、クラッシュすることを心配しています。

RDSインスタンスのメモリが不足する危険性はありますか?インスタンスが正しく設定されているかどうかを調べるには、いくつかの設定やパラメータが必要ですか?この鋸歯模様の原因は何ですか?

Freeable Memory Declining

答えて

36

解放可能なメモリ領域は、それ `s自身のプロセスのためのバッファリングとキャッシングのためのMySQLで使用されます。空きメモリの量が時間とともに減少するのは正常です。私はそれがより多くの部屋を必要とするので古い情報をキックすることを心配しないでしょう。

+0

これについて言及しているmysqlのドキュメントを参照してください。 –

+0

https://dev.mysql.com/doc/refman/5.7/en/buffering-caching.html - しかし、厳密にMySQLではありません。 OS自体(RDSかどうか)は通常、I/Oもキャッシュします。MySQLのバッファリング/キャッシュとOSキャッシュ(ディスク)I/Oとの組み合わせでは、一般的なOSはほとんどの場合、使用可能なRAMをいっぱいにします(必要に応じてエントリをフラッシュします)。これは望ましいことです。悪くはありません。 Linuxは通常、SQLプロセスなしで利用可能なRAMのロット/すべてを使用します。言及したように、freeableが非常に低くならない限り(そこに/スワップする)、あなたは大丈夫です。 – bshea

31

簡単な答え - FreeableMemoryが本当に低く(約100-200 Mb)なったり、重要なスワッピングが発生したりしない限り、FreeableMemoryについて心配する必要はありません(RDS SwapUsageメトリックを参照)。

FreeableMemoryはMySQLのメトリックではなく、OSメトリックです。正確な定義を与えるのは難しいですが、あなたはそれを要求した人にOSが割り当てることができるメモリとして扱うことができます(あなたのケースではおそらくMySQLになるでしょう)。 MySQLには、全体的なメモリ使用量を制限する一連の設定があります(実際にはthisのようなものを使用できます)。一般的に接続の最大数に達することはないという事実のために、インスタンスがこの制限に達する可能性はほとんどありませんが、これはまだ可能です。

FreeableMemoryメトリックの「拒否」に戻ります。 MySQLの場合、ほとんどのメモリはInnoDBバッファプールによって消費されます(詳細はhereを参照)。 RDSインスタンスのデフォルト設定では、このバッファのサイズはホストの物理メモリの75%に設定されています。その場合は約12 GBです。このバッファは、読み取り操作と書き込み操作の両方で使用されるすべてのDBデータをキャッシュするために使用されます。 あなたのケースでは、このバッファは本当に大きいので、キャッシュされたデータでゆっくりといっぱいです(このバッファは実際にはすべてのDBをキャッシュするのに十分な大きさです)。ですから、最初にインスタンスを起動すると、このバッファは空であり、一度DBに読み込み/書き込みを開始すると、このデータはすべてキャッシュに持ち込まれます。彼らは、このキャッシュがいっぱいになって新しいリクエストが来るまで、ここにとどまります。この時点では、最も古いデータは新しいデータに置き換えられます。したがって、DBインスタンスの再起動後のFreeableMemoryの最初の減少は、この事実を説明します。それは悪いことではありません。なぜなら、DBがより速く動作するためには、できるだけ多くのデータをキャッシュに入れたいからです。不快になる可能性があるのは、このバッファの一部または全部が物理メモリからスワップにプッシュされる場合だけです。その時点で、パフォーマンスが大幅に低下します。

予防的ケアとして、FreeableMemoryメトリックが常に100〜200 Mbのレベルにある場合に、異なるスワッピングの可能性を減らすために、使用するMySQLの最大メモリを調整することをお勧めします。

0

私は同じ問題に直面していました。インスタンスの空きメモリが40MBを下回りました。インスタンスを再起動するとメモリがリセットされました。

関連する問題