RDS(网易云关系数据库服务)上线已经有一段时间,陆续不断有产品迁入到了RDS中,在线上运维的过程中,也遇到了一些曾经没有考虑到,或者考虑的不全的东西。后续有时间可以分享给大家。
今天想提到的是线上一个4G的RDS实例,发生了OOM(out of memory)的问题,MySQL进程被直接Kill掉了。在解释这个问题的时候,我们首先需要从Linux系统内存分配策略讲起。
一般写C语言程序,我们习惯使用malloc动态的申请内存空间(Java由JVM负责内存管理),malloc函数会向操作
以三维数组为例
先申请1个一维数组空间:
mat = [None]*d1
d1是第一维的长度。
再把mat中每个元素扩展为第二维的长度:
for i in range(len(mat)):
mat[i][j] = [None]*d2
类似的,把mat中每个元素扩展为第三维的大小:
for i in range(len(mat)):
for j in range(len(mat[0]):
mat[i][j] = [None]*d3
以上是创建的“数组”其实是list类,不是