AWS RDS недостаточно свободной памяти и используется подкачка - PullRequest
0 голосов
/ 15 октября 2018

У меня есть t2.medium RDS (4G Memory & MySQL 5.7.22) со следующими глобальными переменными:

  • innodb_buffer_pool_chunk_size - 0,125G
  • innodb_buffer_pool_instances - 8
  • innodb_buffer_pool_size - 3G

И это результат ПОКАЗАТЬ СТАТУС ДВИГАТЕЛЯ INNODB; :

----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 3298295808
Dictionary memory allocated 1021071
Buffer pool size   196608
Free buffers       8192
Database pages     182510
Old database pages 67208
Modified db pages  46
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 11507859, not young 812666330 1.12 youngs/s, 5324.32 non-youngs/s
Pages read 8720629, created 157094, written 2516637 5.27 reads/s, 0.00 creates/s, 12.40 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 22 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 182510, unzip_LRU len: 0
I/O sum[6344]:cur[0], unzip sum[0]:cur[0]

Объем свободной памяти всегда составляет от 85 МБ доТолько 105 МБ, и около 70 МБ используется из свопа.Это константа, даже когда в RDS почти не запущены процессы.

Кто-нибудь может мне помочь, если нам нужно либо обновить переменные buffer_pool, либо если есть какой-либо другой способ отладки этой проблемы с памятью?

1 Ответ

0 голосов
/ 19 октября 2018

При наличии только 4 ГБ ОЗУ innodb_buffer_pool_size не больше 2 ГБ.Вероятно, этого достаточно, чтобы избавиться от проблемы со свопом.

Надеюсь, innodb_buffer_pool_instances - 8G - опечатка.Я бы порекомендовал 1 или 2, а не тысячи, не миллионы и, конечно, не миллиарды.

В общем, RDS должен был установить все настраиваемые значения на разумные значения.

Cron

Не используйте cron-подобный механизм, если есть вероятность того, что одна итерация не завершится до запуска следующей.Вместо этого имейте непрерывно работающий скрипт (или программу), который выполняет блок, некоторое время спит, а затем повторяется.Это (1) завершит задачу раньше, и (2) не вызовет расплавления (или частичного расплавления) из-за случаев, когда спотыкаются друг о друга (это произойдет ).

...