当前位置:首页 > 日记 > 正文

MySQLOOM系列Linux内存分配

MySQLOOM系列Linux内存分配
RDS(王一云关系数据库服务)已经有一段时间上网,和产品不断进入RDS。在运行和维护方面,也存在一些未考虑或考虑的问题,后续时间可以共享。

我们想说今天是一个在线的4G的RDS实例,具有OOM问题(内存),和MySQL进程已经下降直接被杀死。在解释这个问题,我们首先需要从Linux系统的内存分配政策开始。

一般来说,写C语言程序。我们习惯于使用malloc申请内存空间动态(java的JVM负责内存管理)。malloc函数将连续的存储单元的操作系统,然后再回到这个空间的起始地址。如果malloc函数返回null,它表示没有分配的内存空间的系统。这是我们一般人的想法,当然,这是真正的一些操作系统(Solaris)。

但Linux是没有的情况下,Linux内存分配是采取更积极的配置策略,假定内存空间的应用和不立即使用它,所以允许一定量的超售,当应用程序需要使用它时,操作系统可能已被其他应用程序内存空间,成为能满足应用,需要简单的说,就是允许应用于实际空间的分配(包括物理内存和交换)更大的内存,这一特性称为过量使用。

这个功能在Linux操作系统中也可用,而过量使用政策可以调整,通过设置 /过程/系统/ overcommit_memory不同价值观。

overcommit_memory可以采取3值:

0:默认值,确定是否超售和超售的Linux内核的大小通过一些启发式算法,一般允许轻微的超售,拒绝要求显然不可能,做一些规则和限制,如不同用户过量使用不一样的大小。

1:允许,当然不超售,限制,这并不是无限的,它也是由寻址空间的限制。32位的系统可能是4G,而64位系统约16吨。

2:禁止和禁止超售。由系统分配的内存不会超过*互换+物理内存overcommit_ratio。价值可以通过/proc / / / overcommit_ratio VM系统,,默认是50%。

为了验证Linux的内存分配,我们使用了一个小程序来测试它。
#包括
#包括
#定义兆1024×1024
int main(int argc、argv char * { })
{
void *泮佛罗宁= null;
int计数= 0;

(1)
{
泮佛罗宁=(void *)malloc(兆字节);
如果(!Myblock)打破;
printf(目前分配%d MB
}

出口(0);
}

#包括
#包括

#定义兆1024×1024

int main(int argc、argv char * { })
{
void *泮佛罗宁= null;
int计数= 0;

(1)
{
泮佛罗宁=(void *)malloc(兆字节);
如果(!Myblock)打破;
memset(泮佛罗宁,1 MB);
printf(目前分配%d MB
}
出口(0);

}
前者适用于存储空间通过malloc()和不立即使用它。相反,后者在每次应用程序之后都充满了1,让我们看看两个程序运行的结果。
这是在1G的RAM、400米交换虚拟机上运行的结果。前者比实际内存占用更多的空间,后者不超过实际可用内存空间,这验证了前面描述的Linux的内存分配策略。

这是一个系统的优化。但我们知道,超售是基于这样的假设,不会有大量的项目在同一时间使用资源,这显然也是有风险的。所以,Linux也使用机制OOM Killer(出内存杀手),在系统的可用内存(包括交换)即将被使用,选择性地杀死一些进程释放一些内存。在下一章中,我们专注于Linux的OOM杀手的机制。

相关文章

MySQL批量更新相同字段的方法,用于

MySQL批量更新相同字段的方法,用于

批量更新,字段,用于,方法,多个,首先,MySQL更新了一个数据字段,这是通常写的。 更新表设置这个行业'value'where other_field 'other_value= =; 您还可以在其中指定要更新的记录: 更新表设置这个行业= 'value'where other_field在('other_v…

excel中的文本传递方法

excel中的文本传递方法

方法,文本,电脑软件,excel,当使用excel进行表处理时,通常需要在表的单元格中执行文本换行操作。如果按常规按Enter键,焦点将转移到下一个单元格。那么我们如何自动换行文本呢下面是三种常用的介绍方法。 PC页面文本网络广告图片 方法1:自动…

解决两个jQuery(JS)特定的bug冲突的

解决两个jQuery(JS)特定的bug冲突的

解决方案,冲突,两个,电脑软件,bug,问题: 使用jQuery,JSON是一种资源下载应用程序使用的分页效果paginate.js和JSON数据和jQuery的效果。domwindow js弹出窗口。 但是下面的错误出现了 在弹出事件失败后单击第一页; 分析: 在paginate.js /…

javascript日期对象的详细解决方案

javascript日期对象的详细解决方案

日期,解决方案,对象,详细,电脑软件,日期对象是日期对象和时间对象,其主要功能是实现日期和时间的处理。 1。创建日期对象 复制代码代码如下:var创建=新的日期(); 或 复制代码如下:var创建=新的日期(1983年7月21日01:15:00 / /);此方法用于自定义日…

MySQL支持的数据类型(列摘要)

MySQL支持的数据类型(列摘要)

支持,数据类型,摘要,电脑软件,MySQL,1。数值类型 MySQL支持所有标准的SQL的各种数值,包括严格的数据类型(整数、小数、smallint、数值),和近似数值数据类型(float,房、双精度),并在此基础上,我们向他们。 扩展增加了3个不同长度的字段,MEDIUMINT,和b…

提高页面加载速度的html方法

提高页面加载速度的html方法

方法,页面加载,速度,电脑软件,html,(1)减少HTTP请求(合并资源文件并使用图片精灵); (2)将CSS放在头上,并将Javascript放在正文标签的尾部。 (3)定义图片的宽度和高度; (4)定义字符集; (5)避免空src和href属性, 这是用HTML编写的。 触发 js是用这种方式定义的…

使用AJAX返回JSON的yii2实施

使用AJAX返回JSON的yii2实施

电脑软件,AJAX,JSON,本文阐述了实施yii2使用Ajax返回JSON。分享给您参考,如下: 公共功能actionajax() { 如果(isset(Yii::应用程序->请求->美元后(测试))){ $ajax工作!; 您的查询内容在这里 其他{ } $Ajax失败; 您的查询内容在这里 } 返回 返回一助理 JSON…

如何在WPS中添加下划线或下划线的W

如何在WPS中添加下划线或下划线的W

下划线,文本,如何在,电脑软件,WPS,在普通办公室,我们经常需要抄写或划线。许多人可能还不知道具体的操作方法。这里有一个小的WPS编辑方法,希望对你有所帮助。 WPS添加下划线或下划线方法: 首先,输入文本,然后单击菜单栏-插入-形状,选择直线。 …

一个人的寂寞感伤表达签名签名

一个人的寂寞感伤表达签名签名

感伤,寂寞,电脑软件,很多人都会有寂寞的时候,那么如何用签名表达孤独的心情呢下面,请欣赏签名萧边编译你表达一个人的寂寞。 表达某人的孤独签名推荐 1)你是孤独的,你是孤独的,所以你来到我身边。 2)当一个女人仰望天空时,她不想寻找任何东西,她…

mysql单文件存储删除数据文件容量

mysql单文件存储删除数据文件容量

容量,删除,文件存储,数据文件,解决方案,一个MySQL错误:InnoDB ibdata1不会收缩后被删除的数据 问题描述 当InnoDB引擎使用一个单独的文件存储在数据库中的数据被删除,文件的大小不会改变,这意味着该文件会越来越大。即使它被删除,它也不会允许…

PS如何设计巧克力糖果包装袋

PS如何设计巧克力糖果包装袋

包装袋,电脑软件,PS,有时在你的照片上添加一些装饰品更为精致,在这里我们教你做简单的糖果,既漂亮又可爱。 软件名称:Adobe PS图象处理软件8全绿色中文版软件大小:150.1mb更新时间:2015-11-04 1,打开ps,创建新文件,创建新层,使用钢笔工具绘制图片的…

flexChrome浏览器调试空白解决方案

flexChrome浏览器调试空白解决方案

浏览器,解决方案,调试,空白,电脑软件,flex 4在Chrome调试中,空白,因为谷歌有默认的Flash播放器,只要默认播放器左禁用,新安装的插件,OK,只要在浏览器地址栏,键入:Chrome:Flash播放器, 会看到两个文件,点击查看详细信息,Chrome关闭后就OK了。…