Mysql
RDS 上 MariaDB 的“記憶體不足”錯誤
我們在 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。