AuroraMySQLのProcedureのメモリ制限

0

Aurora MySQLでストアドプロシージャ実行時にメモリ不足によりRDSインスタンスが落ちてしまいます。
エンジンバージョン:8.0.mysql_aurora.3.04.1

ストアドプロシージャ内で大きなテーブルのINSERT SELECTステートメントを実行しており、テーブルサイズに応じてメモリが消費されます。
(今回の場合は10GBほど消費されます。)

FreeableMemory

db.r5.xlargeのFreeableMemoryが8GB程度しかない為、メモリ不足になり、OOM KillerによってAuroraインスタンスが落ちてしまいます。

Available memory is low. Trying to avoid OOM crash:  system KB: 32387536  available KB: 0  low-threshold KB: 1619376  print victim: no  decline query: no  tune caches: no  kill query: no  kill connection: no
OOM crash avoidance result:  success: no  num success: 5  system KB: 32387536  available KB: 0  low-threshold KB: 1619376  recovery time: 11  num declined query: 0  num killed query: 0  num killed connection: 0
{
    "report_time": "2024-02-20 12:46:49 UTC",
    "report_version": "1.0",
    "system_report": {
        "total_mem_kb": 32387536,
        "free_mem_kb": 2171800,
        "swap_total_kb": 16777212,
        "swap_used_kb": 641452,
        "swap_in_change": 0,
        "swap_out_change": 0
    },

各種パラメータ

tmp_table_size=268435456  
max_heap_table_size=268435456  

Auroraインスタンスをdb.r5.2xlargeにスペックアップするとFreeableMemoryが15GB程度に増える為、
その場合はメモリ不足にならずにストアドプロシージャは成功します。
調査の為、EC2インスタンス(t3.large、WindowsServer2022)にMySQL Community Server 8.0.34をインストールし、
AuroraMySQLからダンプしたものをリストアし、同じデータでストアドプロシージャを実行すると成功します。
MySQLプロセスの使用メモリは2GB程度(innodb_buffer_pool_size=1024M)で、
ストアドプロシージャ実行時のMySQLプロセスのメモリ使用率はほとんど変化がありません。

EC2インスタンスのメモリ使用率 MySQLプロセスのメモリ使用量

同じデータにもかかわらずストアドプロシージャ実行時のメモリ消費量がAuroraMySQLとローカルのMySQLでかなり違いがあります。
「ストアドプロシージャなどの特定のクエリは、実行中にメモリを無制限に消費することがあります。」
https://repost.aws/ja/knowledge-center/low-freeable-memory-rds-mysql-mariadb
という記載がウェブ上にありますが、
これはどんな場合に発生しますか?
またOOMを防ぐ方法はありますか?

staff
gefragt vor 2 Monaten184 Aufrufe
Keine Antworten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen