linux跟目录内存爆满,导致服务器上项目经常卡停

废话不多说,直接进入正题

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

项目在服务器上部署的内存空间只有50G

首先,打开终端输入df -h可以查询到如上图所示的信息,从中可以看出跟目录只有50G,而且现在已经使用了47G,还用3.3G可以使用,使用率达到了94%。

这个是导致服务器经常挂掉的原因,现在要做的是释放内存。

首先,我只是去释放了部署项目的tomcat下的内存,服务是可以启动了,但是根本的原因并没有解决,内存使用率还是在不停的上升,一直手动监控,从94%上升到了97%。甲方爸爸说,你就这样看着,随时清理,服务器要是再挂就是你的问题。

解决问题:

cd / 首先切换到跟目录下,进行操作

1、find / -xdev -size +1000M -exec ls -l {} \; 查询目录下内存超过1000M的文件;

看出来了,是mysql的日志文件占用了较大的内存。其实一开始我使用top命令查看了cpu的使用率,是mysql占据的最多,甚至超过120,130左右,那时候就怀疑过时,mysql的日志文件的问题,但是,因为这个项目是一个经手很多人,甲方又没人去维护的一个项目,在服务器中我能看到很多个mysql文件夹,所以具体是哪一个,我不敢随便动手删除文件。

现在通过命令查到了具体的位置,那么接下来就是去清除这个文件,释放内存了。

2、根据上一部查询出来的内容,切换目录到相应的位置

cd /var/lib/mysql

然后释放内存

echo "" > mysql.log

释放之后去使用命令df -h查看,发现内存大量被释放

 

其实总结起来正确的解决方法很快,可能就几步。但是这个正确的过程就不太容易了,甲方在后面追,老板在催,你自己手里还有自己其它的项目要去做,只有自己能体会啊。

说说我解决问题的过程,其实也有很多东西可学。建议你看下去。

首先,我输入df -h查看了内存状况

通过这个可以看到各个目录下面内存的使用状况。然后我输入了top指令,查看了cpu的使用状况

我从cpu的使用状况看到是mysql对cpu的使用率占据很多,但是在这告诉大家,这个并不能确定一定就是mysql的问题,只是加深我的猜测,因为,这个cpu使用率在我看来和内存貌似并么有多大的联系。

然后我在cd / 目录下面输入了du -sh * 命令

我在网上查到的关于这个命令的解释是可以查看目录下文件的大小,下面是我在/目录下的信息

当时我看到home占据402G的时候就是一阵怀疑,我在home下面部署的是一个自动翻译,占据的内存是很大,但是这个究竟是不是造成服务器挂掉的原因呢,毕竟通过前面的查询,根目录只有50G啊。想想自己的目录cd /

然后我将目录切换到了etc目录下cd /etc 然后运行了du -sh *

确实查询除了各个文件的大下,但是是该etc目录下的文件的大小,同理,在cd /目录下,我怕查的是硬盘的大小吧。

时间很急,看着使用率达到97快到98,服务器马上要挂了,我能怎么办啊。先解燃眉之急吧,先把tomcat下的日志文件删除了,但是这次并没有多大效果,因为前面已经删除过一次了。我就想,估计是甲方又在做什么测试,导致什么文件不停上升。想到这,对了,去看看数据库日志。cd /var/log

然后输入du -sh *

 

是不是很惊喜,并没有很大的文件存在,那么这个本应该存储日志的地方,存储的日志文件呢?

既然这样不能解决问题,就只能进入mysql去伤处日志了。

mysql -u root -p

输入密码登录数据库

use mysql;

show binary logs; 查看日志文件

 

这个是我清理过后的样子,在没清理之前是有很多日志列表的

show master status; 查看当前正在使用的日志文件,该命令会返回一个当前正在使用日志文件的文件名。注意当前使用的日志文件你是不能删除的,那么在删除日志文件的时候你是不能删除该文件的。

purge binary logs to ‘mysql_bin.000038’; mysql_bin.000038是当前正在使用的日志文件名。

完成上面命令我再去cd /目录下输入df -h

发现从98%下降到94%,下降了,但是显然根本问题并没有解决。

这时候明确目标,清理无用内存,释放内存。而显然内存最对的地方就在日志这一块

cd /var

du -sh *

然后我发现在lib文件居然占了23G,一个存储日志的地方,这里有23G,进去看看

我进去之后发现文件夹很多,但是我发现了两个文件夹,一个是tomcat,一个是mysql,我想先拿mysql下手,因为刚才的清理mysql起效最多。进去之后发现好多.log文件,然后我突然想到一个命令

find / -xdev -size +1000M -exec ls -l {} \;

通过它,我锁定了真正这个占据内存最多的日志文件mysql.log

这时候,清理释放

echo "" > mysql.log

然后切换目录 cd /

然后输入df -h

发现根目录的使用率一下下降到了38%。问题就这样解决

最后然后输入

du -h -x --max-depth=1查看内存使用状况

 

总结一下:核心是找到需要清理的文件,清理文件,释放内存。关键是找到对的文件,一步步慢慢找,总能找到,多运行几个命令,多分析一下,总会找对的。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值