Linux内存使用高,触发系统宕机

摘自:http://www.cnblogs.com/itfriend/archive/2011/12/14/2287160.html

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

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

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


[[email protected] root]# cat /proc/sys/vm/min_free_kbytes

163840

echo 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

实际情况分析:内存只剩下50MB,4GB内存大部分被cache和buffer占用,导致系统宕机,目前

设置了min_free_kbytes的阀值

#echo 400000 > /proc/sys/vm/min_free_kbytes

但实际上,并没有从根本上解决问题.

情况如下:

1)内存逐渐减少到50MB的时候,开始释放,然后到达400MB,逐渐使用,最后回到50MB,依次循环,实际上是非常危险的,由此造成宕机,说明这个设置并不是实时的,而是一个阀值检测。

2)出现了out of memory的打印,系统日志出现问题了。

结论:设置的阀值不是实时有效的,而是一个动态改变的过程。

时间: 2024-10-18 15:10:26

Linux内存使用高,触发系统宕机的相关文章

nginx全面解析【负载均衡、反向代理、高可用、宕机容错】

nginx全面解析[负载均衡.反向代理.高可用.宕机容错]原创itcats_cn 最后发布于2018-09-06 10:24:33 阅读数 15799 收藏展开什么是nginx?nginx是一款高性能的http服务器,官方测试nginx能够支支撑5万并发链接,并且cpu.内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx. nginx有什么作用?1.负载均衡(可以减轻单台服务器的压力) 2.反向代理(隐藏企业真实的ip地址) 3.搭建虚拟服务器 4.用做静态服务器(实

记一次dell R720服务器ESXI5.5系统宕机的奇葩经历

?记一次dell R720服务器ESXI5.5系统宕机的奇葩经历? 总结点: 1,  没看宕机的原因. 2,  无故重置bois. 3,  不看日志. 4,  Dell r720服务器 内存需要按照顺序插入,如:A1,A2,A3,A4. 5,  使用idrac远程管理页面. 6,  要有自己的判断问题思路,不要什么都依着400. 7,  对问题不重视,要不然就不会直接重启设备了. 失误点一:没看宕机的原因 17号下午5点多的时候,正用着服务器上的虚拟机工作时,mstsc窗口突然断开了.Ping也

面试官:Redis 数据库内存数据满了,会宕机吗?有内存回收?

Redis 数据库内存数据满了,会宕机吗?答案是:不会让他出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LRU算法进行淘汰,等等...接下来就跟着作者一起探讨,Redis的内存淘汰策略. Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 通过在Redis安装目

Linux内存管理(x86-32位系统)

linux内存的管理主要分为两部分,地址管理和存储设备管理.下面针对这两部分介绍一下我对内存管理的理解. 硬件地址的基本概念 DRAM域地址:是DRAM控制器所能访问的地址空间集合. PCI总线域地址:是PCI设备所能直接访问的地址空间集合. 存储器域地址:是CPU所能访问的地址空间集合. 结合下图对上面概念进行解释: CPU访问DRAM域或PCI总线域地址空间时,都需要进行地址转换(将存储器域地址转换为相应域的地址).例如:CPU访问DRAM域时,需要进行存储器域地址空间到DRAM域地址空间的

Linux内存使用消耗高

Linux系统下如果内存占用很高又找不到是被什么程序占用的,需要考虑下是否是SLAB的问题.SLAB是Linux操作系统的一种内存分配机制,可以使用下面命令来查看.例如: cat /proc/meminfo |grep -i slab 然后再通过SLAPTOP来查看是哪里占用的并相应解决.执行slaptop命令后显示如下,可查看到使用内存高的进程.

项目笔记-数据库进程宕机

简述情景: 1. 最开始出现邮件报警,db进程内存超过5G. 2. 1小时后,db宕机 3. 检查日志,发现mysql语句执行很慢.从18:30开始出现日志警告. 写了个程序测数据库执行速度.连本机数据库执行1000条语句,时间500ms左右.连其他机器数据库执行1000条语句,时间8s左右.服务器的数据库执行线程500ms执行一次,也就是说一旦一次的执行时间超过500ms,而且sql语句持续增加,服务器的执行就开始阻塞,导致内存开始累计.最终服务器由于内存过高,发生宕机. 临时解决方案: 由跨

Linux服务器宕机案例一则

案例环境 操作系统 :Oracle Linux Server release 5.7 64bit 虚拟机 硬件配置 : 物理机型号为DELL R720 资源配置 :RAM 8G Intel(R) Xeon(R) CPU E5-2690 8核 案例描述 早晨发现桂林那边一台Linux服务器(虚拟机)网络无法ping通,于是联系那边的系统管理员通过Lync共享桌面给我,通过他的电脑VMware vSphere Client登录后,发现在控制台亦无响应.无法登录.无法操作,输入操作无响应.也就是说系统

Windows 2008 R2企业版系统时常宕机问题

1.这几天在客户这边新装的 Windows 2008 R2企业版做财务服务器使用,上面安装SQL Server和Oracle 11G,找的激活工具进行激活运行了一周没有发现问题,今早上班来发现系统宕机,重启后查询系统日志发现有wlms.exe 开始为客户计算机关闭电源,查了些相关资料发现该服务是license校验服务,看来激活工具没有彻底激活08系统,从server manager里面看还确实是未激活,但在计算机-属性看到的是已激活... 由于财务系统着急使用最后通过客户渠道找了个用工的2008

几台WEB经常宕机,求分析原因

几台WEB服务器经常宕机,平时运行得好好的,负载也都在2以下,偶尔会突然负高上去就宕机,init 6也无法重启成功 只能echo 'b'>/proc/sysrq-trigger 硬重启才行,dmesg 没发现硬件方面有问题. 从top相关信息来看,每次宕机现象都是系统内核态占用非常高,相关nginx,php-cgi进程虽然不僵死但无法kill 每次宕机都会有kswaped0进程出现,但是从free上来看,内存还是有空闲,swap用得也并不多 top - 22:26:02 up 3 days,