正在使用aws rds低可用内存和交换

lnxxn5zx  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(454)

我有一个t2.medium rds(4g内存和MySQL5.7.22),带有以下全局变量:
innodb\缓冲池\区块\大小-0.125g
innodb\ buffer\ pool\示例-8
innodb\缓冲区\池\大小-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]

可释放内存始终仅在85mb和105mb之间,大约70mb正从交换中使用。即使在rds上几乎没有进程运行时,这个值也是不变的。
如果我们需要更新buffer\u pool变量,或者如果有其他方法来调试这个内存问题,有人能指导我吗?

toe95027

toe950271#

只有4g的内存,使 innodb_buffer_pool_size 不超过2g。这可能是低到足以摆脱互换问题。
希望如此 innodb_buffer_pool_instances - 8G 是个打字错误。我推荐1到2个,不是几千个,不是几百万个,当然也不是几十亿个。
一般来说,rds应该将所有可调参数设置为合理的值。
克朗
如果有任何一个迭代在下一个迭代启动之前没有完成的可能性,不要使用cron式的机制。相反,要有一个连续运行的脚本(或程序),它执行一个块,休眠一段时间,然后重复。这将(1)更快地完成任务,并且(2)不会由于示例相互绊倒而导致崩溃(或部分崩溃)(它将发生)。

相关问题