メモリを監視する
Aurora MySQLはパフォーマンス最適化のため、メモリの80%から90%が利用されるように設定されている。(MySQLのデフォルト設定)
メモリの80%から90%までが利用されるようになっている理由はデータベースのパフォーマンスをあげるためです。空きメモリがあると積極的にバッファプールに利用されます。
バッファプールは以下のパラメータで設定されます。
innodb_buffer_pool_size:InnoDBバッファプールのサイズ。基本的に物理メモリの 75% に設定されています。
このように積極的に空きメモリはバッファに利用される為、メモリ使用率が90%以下の場合は気にしなくて大丈夫みたいです。
メモリ負荷レベルを 95% 未満に保つことがベストプラクティスのためメモリの使用率が90~95を超えたらアラートが発報するように設定しておくのがよさそうです。
AuroraやRDSにはメモリ使用率のメトリクスがないのでFreeableMemoryをしきい値90~95%で設定するとよいでしょう。
また、メモリが枯渇していないかを確認するにはFreeableMemoryだけでなく、SwapUsageやBufferCacheHitRatioといった指標が役に立ちます。
SwapUsage 大量のスワップが使用されている場合はメモリが枯渇している可能性が高い
メモリの状態を確認するのにメトリクスが役立つ
BufferCacheHitRatio バッファキャッシュによって処理されるリクエストの割合を測定、ヒット率が高ければ効率よくバッファキャッシュを使用してDBが動作していることがわかる。
InnoDB(イノデービー)とは
MySQLについて調べていると出てくるInnoDB(イノデービー)ですが、何かというMySQLで使用できるストレージエンジンの一つです。
ストレージを監視する
Auroraのストレージは自動拡張するので監視不要と思っていたのですが、Auroraのストレージには2種類あるみたいです。
クラスターボリュームとローカルストレージです。
クラスターボリューム
複数のAZにまたがって配置されるストレージです。最大128テラバイトまで自動的に拡張されます。
ローカルストレージ
エラーログ、一般ログ、スロークエリログ、監査ログ、および InnoDB 以外の一時テーブルの保存に使用される。自動拡張しないためDBインスタンスのクラス変更するしかない。ローカルストレージが枯渇するとエラーになり障害が発生してしまうので注意が必要。
参考記事