AWS AuroraMySQL 3.01.0(Mysql8.0.23) で、DBにリクエストを投げ続けると以下のようにメモリが解放されず、DBが再起動する事象が発生しました。
オレンジの線はライターインスタンス。
緑の線はリーダーインスタンスとなります。
オレンジの線の線が降下している時間 = 300TPSでAPIを実行(DBにinsertを実行)となります。
APIの実行を止めるとオレンジ線は横這いとなり、メモリが解放されません。
inodb_buffer_poolが悪さをしているのかと思いましたが、DB再起動後にinodb_buffer_poolを確認すると使用量がほぼMAXとなっています。
inodb_buffer_pool_sizeがinodb_buffer_poolの上限値。(単位はバイト)
inodb_buffer_pool_bytes_dataがinodb_buffer_poolの現在の利用量。(単位はバイト)
SHOW GLOBAL STATUS LIKE 'InnoDB\_buffer\_pool%';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_%';
aurora_oom_response
パラメータをtune
に設定しても改善せず(参考)
色々調べても原因が分からず困りました。
解決方法
AuroraMySQL 3.01.0(Mysql8.0.23) から AuroraMySQL 3.03.1(Mysql8.0.26)にバージョンアップしたところメモリが減らなくなりました。
下記グラフの3:00から300TPSでAPIを実行し続けていますが、メモリが減らずに安定しています。
※ 空きメモリが上昇している箇所は、AuroraMySQLをバージョンアップしたタイミング