32位linux 内存占用,LINUX内存高,触发OOM-KILLER问题解决

最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂

1. 首先确认该系统的版本是32位

#uname -aLinux alarm 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386

2. 我们了解一下32位Linux的内存管理结构

# DMA: 0x00000000 -  0x00999999 (0 - 16 MB)# LowMem: 0x01000000 - 0x037999999 (16 - 896 MB) - size: 880MB# HighMem: 0x038000000 - 

内核使用low memory来跟踪所有的内存分配,这样的话一个16GB内存的系统比一个4GB内存的系统,需要消耗更多的low memory,当low memory耗尽,即便系统仍然有剩余内存,仍然会触发oom-killer。在2.6内核的表现是,杀掉占用内存最高的进程,所以会导致sshd等进程被杀掉,造成系统无法登录。

-bash-3.00# free -lm

total used free shared buffers cached

Mem: 2026 1973 52 0 36 1303

Low: 874 823 51

High: 1151 1150 1

-/+ buffers/cache: 633 1392

Swap: 3067 142 2924

4. 所以我们需要保护LowMem,在2.6内核引入了lower_zone_protection,这将让内核愿意保护low memory,从而在分配内存时优先考虑从high memory分配。

-bash-3.00# cat /proc/sys/vm/lower_zone_protection0-bash-3.00#echo 400 > /proc/sys/vm/lower_zone_protection

另一起问题是24G内存的系统,空闲内存已经不到50M

1. 确认该系统的版本是64位

# uname -aLinux gxgd-nms-app 2.6.18-194.el5xen #1 SMP Tue Mar 16 22:01:26 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

2. 用ps查看各进程的内存,大约就占用了4G, 绝大部分内存都是被Page Cache所占用。Linux内核的策略是最大程度的利用内存cache 文件系统的数据,提高IO速度,虽然在机制上是有进程需要更大的内存时,会自动释放Page Cache,但不排除释放不及时或者释放的内存由于存在碎片不满足进程的内存需求。

所以我们需要一个方法,能够限定PageCache的上限。

Linux 提供了这样一个参数min_free_kbytes,用来确定系统开始回收内存的阀值,控制系统的空闲内存。值越高,内核越早开始回收内存,空闲内存越高。

[root@zyite-app01 root]# cat /proc/sys/vm/min_free_kbytes163840echo 963840 > /proc/sys/vm/min_free_kbytes

其他可选的临时解决方法:

关闭oom-killer

cat /proc/sys/vm/oom-kill

echo "0" > /proc/sys/vm/oom-kill

vi /etc/sysctl.conf

vm.oom-kill = 0

2. 清空cache (可选)

echo 1 > /proc/sys/vm/drop_caches

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java web过滤器

java过滤器(imooc学习)定义:过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤。 工作原理 1、过滤器中web容器启动时就进行加载2、过滤器存在于用户请求和web资源之间3、用户请求和web资源响应的【收发】都经过…

密码加密

密码加密 一般在数据库中存储明文的密码是不安全的,一般在项目中都会对密码进行加密密码。加密肯定需要加密算法。加密算法分两大类,一大类是可逆加密,另外一大类不可逆加密。可逆加密分两类,一类是对称加密,另外一类是…

WebApp匯入資料之From Excel

1、情景點擊“瀏覽”按鈕,尋找要上傳的Excel。按下上傳按鈕,資料寫入資料庫(database)並且顯示在畫面上。然後,按下“保存”按鈕,Datagrid上的資料寫入DB。2、分析按下上傳按鈕,先將Excel上傳到…

在linux系统中查看组管理信息命令,Linux用户和组管理常用命令

导读这篇文章主要介绍了用户和组管理常见,总结整理了linux用户和组管理相关原理、操作与使用注意事项,需要的朋友可以参考下。1、用户隶属于用户组的2、用户与用户组配置文件1)用户组配置文件/etc/group第一列:用户组的组名第二列:组密码(真正的密码存储…

Node.js有了新的管理者

一段时间以来,围绕Node.js发展方向的争论一直不断。去年10月,Joyent宣布成立Node.js咨询委员会,探索一种开放式的治理模式,但还是没能避免io.js分支的出现。而不久前,Node.js和io.js似乎出现了合二为一的希望。近日&am…

sql server 函数学习

sql server 创建函数 资料 https://docs.microsoft.com/zh-cn/sql/relational-databases/user-defined-functions/create-user-defined-functions-database-engine?viewsql-server-2017 https://www.cnblogs.com/ABblog/p/5660610.html -- SELECT *from wzh_demo1 CREATE FUN…

在linux操作系统也有非常友好的图形界面,一般我们称为,在linux操作系统也有非常友好的图形界面,一般我们称为...

操作不属类型的是梗死于脑。理学完全得益中于物,系统形界香气空气带有的分使得散子在中扩,们的被我鼻子:花大学的芬感知中国芳能。比性会计核算的可原则,也有友好般期间不同会计会计信息向比较的纵以便。户贷记录是:非常在账方的&…

Trust is the most important thing to the team!

Trust is the most important thing to the team!转载于:https://www.cnblogs.com/7hihi/archive/2010/11/23/2564240.html

MATLAB中导入数据:importdata函数

用load函数导入mat文件大家都会。可是今天我拿到一个数据,文件后缀名竟然是‘.data’。该怎么读呢? 我仅仅好用matlab界面Workspace区域的“import data”button手工导入该文件。恩,还好,竟然成功了。顺便提一下,这个“…

Codechef January Challenge 2018 - Killjee and k-th letter

题意: 给出一个的串 s,将 s 所有子串按照字典序排列好相接起来形成一个新串q次询问,每一次询问问新串中的第 k 个字符是什么,强制在线。 $|s|,q \le 2*10^{5} $ 跟所有子串有关,那肯定要么是后缀自动机,要么…

linux如何过滤字符串,在linux系统如何grep过滤中,不包含某些字符串的命令

转:http://www.dutycode.com/linux_grep_bubaohan.html文章系转载,亲测可用(转载自:http://www.itokit.com/2014/0105/75018.html)grep命令应该是我们在获取字符串内容时,或读取文件时,进行分析的好命令,但…

AppFabric Caching Admin Tool

最近试用了一下MS的AppFabric的分布是缓存(Velocity),发现了一个不错的可视化配置工具挺有用,先介绍给大家,后续再详细介绍。 http://mdcadmintool.codeplex.com/ Project Description The AppFabric Caching Admin To…

剑指offer——最小的K个数和数组中第K大的元素

解题思路: 乘着做这个题,顺便复习下堆排序。 先说堆排序是一个什么东西:https://blog.csdn.net/u013384984/article/details/79496052 大顶堆升序,小顶堆降序。 随便定义的一个堆。 第一步: 此时我们从最后一个非叶子结…

深度启动盘工具linux,Linux下无法安装深度启动盘制作工具

正在选中未选择的软件包 deepin-boot-maker。(正在读取数据库 ... 系统当前共安装有 231455 个文件和目录。)正准备解包 deep.deb ...正在解包 deepin-boot-maker (2.0.0-1) ...dpkg: 依赖关系问题使得 deepin-boot-maker 的配置工作不能继续:deepin-boot-maker 依赖…

GIS二次开发之初探

最近一段时间在学习GIS的二次开发,作为新手,最好的方法就是泡论坛,看原码,当然涉及到地理方面的专业知识,不可能说一两天就可以弄懂,只有在学习编程的过程中慢慢的去体会一些地理专业上面的知识。 就几天的…

构建之法阅读笔记03

个人感受: 过去:个人英雄主义,却是一只狗熊 为什么不好:双拳难敌四腿,大项目一个人是很难完成的 解决方法:加入团队,共同开发 这章让我了解到了很多种软件开发的团队模式,有娱乐性的…

CSS3 2D Transform

位移translate()函数 结合起来,translate()函数移动元素主要有以下三种移动: 水平移动:向右移动translate(tx,0)和向左移动translate(-tx,0);垂直移动:向上移动translate(0,-ty)和向下移动translate(0,ty);对角移动&am…

[转]用g++编译动态链接库

写了一个最简单的动态链接库程序,使用g命令行编译。怕以后忘记,就把它记到blog中。动态库导出头文件:/** * file: dll.h * Powered by JGood 2009-09-22 */ #ifndef __dll_h__#define __dll_h__ #ifdef __MY_DLL_LIB__ #define DLL_EXPORT extern …

linux传奇源码,游戏源码 屠龙传奇H5 鲲乃异兽 全套源码+教程

一、游戏的要求系统要求系统要求liunx6.9系统 因为游戏是java对服务器配置要求比较高如果您的资金够宽裕可以选择直接购买 liunx6.9系统 8核16G 240G/320G硬盘 10兆以上宽带的服务器 这样可以直接保证游戏的稳定性如果不想出那么多钱 可以一步一步来开新区用4核4G 1…

javascript setTimeout 和 setInterval 区别

[setTimeout]setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数 是一次用setTimeout实现的自动变化显示随机数的效果:<html><head><script>window.οnlοadsett;function sett(){document.body.innerHTMLMath.rando…