
これを理解するにはあなたの助けが必要です。私は 100 GB のストレージを備えた RDS MySQL インスタンス (SSD 上の db.m3.large) を実行しています。
私の記憶が 50% しかないことに少しびっくりしています。
チャート http://f.cl.ly/items/2130242A0K040E392h0L/10.png
現時点ではサーバーの使用率はまったく高くないので、何か間違っているに違いありません。過去 2 週間のグラフは次のとおりです。
2 週間の使用状況チャート http://f.cl.ly/items/2y411W0z0I1V1T0T3O3T/11.png
ご覧のとおり、CPU はほとんど 0% で、DB 接続は低く、書き込み/読み取り操作も低いです。
私はすべての InnoDB テーブルを実行しています。思い浮かぶのは (メモリをこれほど増加させた可能性がある) 分析機能だけです。分析計算の毎日の要約を保存するテーブル (シャード化) が 1 つあります。そのテーブルには 4 つのmediumtext
フィールドがあるため、そのテーブルに Barracuda ファイル形式を使用するように InnoDB を変更しました (こうすることで、 を使用できますrow_format=compressed
)。これは、そのインスタンスのデフォルトではない唯一の DB パラメータです (その他はすべて既定です)。
そのテーブルにはそれほど多くの行はなく、最大の行は今のところ最大 35kb 程度です。最大のクライアントには 56 行あります (クライアントもそれほど多くありません)。そのため、これが原因である可能性があるとは驚きです...
メモリがなぜこんなに高くなったのか(つまり、何を間違えたのか)について、何かヒントを教えていただけますか? MySQL が分析クエリ/結果をキャッシュしているからでしょうか? それとも、別の理由でしょうか?
答え1
何が起こっているかのヒントは、「Freeable Memory」グラフにあります。データベースがプロセス メモリ内に大量のテーブル データとインデックス データを保持していた場合、その数値は実際よりもずっと小さくなります。現状では、Freeable は Total とほぼ同じ大きさです。
設計どおりに動作しています。何も表示されません。PANIC = FALSE に設定してください。