服务器内存占用导致死机原因

最近,服务器经常死机。

1.第一步,登录服务器用top命令查看。内存占满了。
2.第二步,观察,一共16G的内存,内存占用,每天增加6G.
3.第三步,缓存区的内存占比很大。

用命令
free -g 5 或
free -m 5
即每5秒观察内存情况。

为了永久释放该内存。我编辑了这个文件。
在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效!

然后再写了一个定时脚本。(应该是写了这个脚本就不用改上面的配置,但为了保险,我还是两种方法都用上了。如有不对,请高人留言指点)

定时(每小时)清理一下缓存区的内存。

1.释放内存脚本:
在/data/sh/下创建releasememory.sh,然后把下面的代码贴进去,保存。
该脚本作用是:查询free内存比例,少于20%就清空缓存。

vi releasememory.sh

#!/bin/bash
mem_total=free -m | awk ‘NR==2‘ | awk ‘{print $2}‘
mem_free=free -m | awk ‘NR==2‘ | awk ‘{print $4}‘
mem_used=free -m | grep Mem | awk ‘{print $3}‘

echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Total:${mem_total}MB][Free:${mem_free}MB][Used:${mem_used}MB]" >> /var/log/mem.log

if (($mem_used != 0)); then
mem_per=0echo "scale=2;$mem_free/$mem_total" | bc
DATA="$(date -d "today" +"%Y-%m-%d-%H-%M") free percent is : $mem_per"
echo $DATA >>/var/log/mem_detect.log
mem_warn=0.20
mem_now=expr $mem_per \> $mem_warn
if (($mem_now == 0)); then
sync
echo 3 > /proc/sys/vm/drop_caches
echo "OK" >> /var/log/mem.log
fi
fi

  1. 给脚本执行权限

#chmod +x releasememory.sh

  1. 把脚本添加到系统定时任务:

以下命令是把定时任务放到cron配置文件里,作用是每天1小时执行releasememory.sh脚本。
crontab -e
编辑:

4.重新加载cron配置和重启cron服务

#service crond reload
#service crond restart

5.查看log:

/var/log/mem.log
/var/log/mem_detect.log

当然,我也检查了一下程序代码(ThinkPHP框架的),
发现有一个定时任务是每分钟执行。
而执行的方法是一个循环更新表。即
foreach中写了对数据库的update.
虽然那个数据库中目前只有5条记录。但每执行一次就要消耗:4,896.46kb内存。一天下来有6G,可能这个也有影响的。
然后我把这段程序改写了一下,foreach中用Model而不是Db。
我们的定时任务,还有一个每5分钟同步网站代码到另一服务器(这个就没有动了,这个写很久了,之前也没引起死机)。

尽量减少可能的原因,给出解决的方案。

总之,现在这样就好了!

本文参考了:
Linux中top命令输出指标详解
https://www.jianshu.com/p/af584c5a79f2

inux下的缓存机制及清理buffer/cache/swap的方法梳理
https://www.cnblogs.com/kevingrace/p/5991604.html

linux top显示的各个符号参数意义详解
https://blog.csdn.net/junmuzi/article/details/49103429

cron定时任务+释放内存脚本释放服务器缓存
https://blog.csdn.net/eric0000000/article/details/77749087

如果您遇到同样的问题,采用以上方法还没有解决。
欢迎加入PHP技术问题群:QQ群号:292626152
提问交流,分享资源。

原文地址:http://blog.51cto.com/phpervip/2155879

时间: 2024-10-06 07:11:49

服务器内存占用导致死机原因的相关文章

游戏服务器内存占用动态调整

最近游戏在腾讯平台上线,已经快破200组,以前是一台机器可能就放一两组游戏区内存绰绰有余,只要没发生内存泄漏,也就没去关心. 但现在为了节约成本,我们会尽量一台虚拟机上放尽量多的游戏区.所以我们默认放了4个区(每个区占用6G,共24G),还有放了logger 服,gate,flash,redis等应用, 发现只要服务器维护后快一星期左右,内存占用从原先的10几个G一路高歌猛进,直到占满内存 95%+,经常性收到监控邮件,内存又不足了,甚至引发OOM killer. 为什么人数这么少了,内存占用还

服务器内存占用不断的增加 & 任务管理器(PF使用率)不断的增加:关注句柄数

最近一二个月以来,我发现服务器的内存占用正按着每天60M的速度增加. 一台windows 2003的服务器(2G内存),刚刚启起时占用内存:600M左右. 运行20天后,内存占用(PF使用):1.8G 其实物理内存使用情况在这20天来并没有太大的变化,但虚拟内存占用明显在不停的增加. 我通过“任务管理器”一直也找不到是哪个进程占用的这么多的内存. 也许是因为“任务管理器”里显示的内存占用仅代表的是“物理内存占用”吧. 今天对比服务器上和本地电脑上的“任务管理器”的显示情况,偶然发现它们之前的一个

分析电脑死机的常见的几种原因,以及对应的解决方法

很多的电脑用户都遇到过各种各样的电脑故障,例如花屏.黑屏.又或者是电脑无法开机.死机等等都是比较常见的故障,为了修好电脑,我们今天就来了解下,当电脑经常死机,我们用什么方法解决呢?下面就跟随小编一起来看下吧.造成电脑死机的因素有哪些呢,小编咨询了一些精通电脑维修技术的大手子,也在网上查询了许多相关的资料,并结合我自己遇到的死机的情况,来给大家谈谈导致电脑死机的四大因素,并在每个因素中讲解了具体的解决办法和注意事项,希望能帮到更多的朋友,让电脑不再受到各种故障的困扰,也不必花大价钱去电脑城维修.

电脑死机是什么原因造成?解决电脑死机的方法

死机原因:电脑待机后会自动降低cpu频率及风扇转速来节省能耗,现在的cpu频率普遍较高,风扇转速过小或者是不动,cpu就会热的发烫,所以从待机进入正常模式就容易死机. 解决方法: 1.开机进入bios界面,选择"Power Management Setup"选项,如图所示: 2.找到"Fan Off When Suspend"选项并回车修改设置成"Disable",即可.

linux系统死机分析及解决方法

一.常见死机原因 二.日志分析 日志系统,通过rsyslog.service服务进行控制,分别用于记录系统内核和各应用程序的日志信息.配置文件/etc/rsyslog.conf /var/log/messages    记录系统内核消息及各种应用程序的公共日志信息,包括启动.IO错误.网络错误.程序报错等,对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关事件的日志记录信息. /var/log/cron    记录crond计划任务产生的事件消息 /var/log/dmesg  

【WP 8.1开发】解决调用真实摄像头会死机的问题

无论你是用Silverlight还是用RT的API来开发,在使用MediaCapture拍照片或录视频时,要是在模拟器上运行会万事大吉:但是,一旦放到真实手机上运行,肯定有人发现了,细心的朋友肯定发现了——不知道为什么,会经常导致手机重启,或者死机. 啊,顺便给大家说说,死机不可怕,也不用重置,也不用刷机,不会丢失资料的,你只要同时按下“音量减”+“电源”两个键,要同时按住,不要放开,大约等10多秒后,会关机,然后你再放开这两个键,这样手机就软启了,不会丢失数据. 不过,如果你的运营商(如中国联

电脑死机故障分析

电脑死机故障分析 每个使用过电脑的人恐怕都遇到过死机现象,电脑的死机确实是一件很烦人的事,有时还会给您带来不小的损失,但是这个问题也确实是很复杂的,死机既有可能是硬件上的暇弊,也有可能是软件中的bug,当然还有可能就是您的"非法操作".下面想就一些实例来具体问题具体分析一番: 显卡原因 Q 一台电脑发生经常性的死机现象,启动电脑,会有三声报警声,显示器有时不能点亮,但主机工作正常,在设置成32位色彩后,死机更加频繁.为什么? A 造成以上情况死机的原因可能有两个:一个是显示卡散热不好造

服务器内存线性增长,根据句柄数查找问题进程

服务器修改成nignx+xxfm之后 访问速度变快了很多.但是服务器内存每天线性增长30M左右. 网上找了很多资料都不行.根据这篇文章服务器内存占用不断的增加 & 任务管理器(PF使用率)不断的增加:关注句柄数(转) 查看所有进程的句柄数,发现xxfm.exe进程的句柄数有3万多,其他进程都是最多的也就是900句柄. 之后结束xxfm.exe进程 然后重启nigx,服务器内存由1.58GG 变成了正常的960M. 以后只能每个月结束一次xxfm进程了.用windows想做到服务器几年不用操心还是

服务器老是死机,重启后就可以了。。已解决

服务器没过多久又死机了,重启后又可以,开始以为是软件的问题,重装了干净的系统,结果没多久还是出现这个问题,在安装系统的时候非常缓慢,排除了软件问题,应该是硬件有问题了,内存.CPU经过替换法排查都没有问题,想到安装系统的时候非常缓慢,怀疑是硬盘有问题,下载了硬盘检测软件,结果一看,居然很多坏道,马上了一个新硬盘,后面再也没出现这种情况. 分析原因:硬盘有坏道,当系统读取到坏道的时候卡机或死机. 服务器老是死机,重启后就可以了..已解决,布布扣,bubuko.com