Mysql

RDS 上 MariaDB 的“記憶體不足”錯誤

  • June 29, 2017

我們在 AWS 的 RDS 平台(4gb,2xCpu)上有一個 t2.medium 實例。我們將 MariaDB 10.1.19 與單個數據庫、約 120 個表和總共約 2gb 的數據一起使用。

執行大約一周後,我們收到此錯誤,起初只有一些請求,然後是大量請求,然後它開始影響更多查詢。最終導致重新啟動。

PHP (PDO) 錯誤:

General error: 5 Out of memory (Needed 262680 bytes) 

Mysql(來自error.log)

2017-06-14 10:55:29 47531169896192 [ERROR] mysqld: Out of memory (Needed 262680 bytes)

這顯示了實例上的“可釋放記憶體”(我們重新啟動時的峰值)。

可釋放記憶體

我們正在使用預設的 mysql 配置。我們執行了它提到的 mysqltuner:

Variables to adjust:
query_cache_size (=0)
query_cache_type (=0)
join_buffer_size (> 512.0K, or always use indexes with joins)
thread_cache_size (start at 4)
performance_schema = ON enable PFS
innodb_log_file_size * innodb_log_files_in_group should be equal to 1/4 of buffer pool size (=1G) if possible.
innodb_buffer_pool_instances(=2)

所以我們從那以後嘗試增加join_buffer_size(到 512k)和增加key_buffer_size(到 16M),但似乎沒有任何區別。不確定錯誤是作業系統沒有可用記憶體還是mysql程序本身的結果。

有什麼建議?(謝謝​​)

通常快速解決方法是減少最大的記憶體使用量——這應該是innodb_buffer_pool_size。目前設置的是什麼?您是否在同一 VM 上執行其他應用程序?他們佔用了多少空間?

在 4GB 的“機器”上,我不建議innodb_buffer_pool_size高於 1500M,但如果伺服器不是專用於 MySQL,則建議不要高於 1500M。

引用自:https://dba.stackexchange.com/questions/176263