MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > linux / 正文

「服务器问题」「rocketmq」-磁盘空间爆满,重启云服务器解决

2024-11-26 14:51 huorong linux 8 ℃ 0 评论


今天遇到了roketmq没有内存的问题,报错信息:RocketMQ报错:service not available now, maybe disk full

,连接云服务器,发现没有了空间,(没有截图),图中标红的那行,已使用100%

最终是百度搜索如何清理c盘,但是最终没有解决,最后没办法,重启了下云主机,重新启动后,解决问题。


以下是具体的过程。

1、首先通过排查那个文件夹占用得多,但是看不到文件

df -h 查看磁盘占用量


直接使用du命令 du -h --max-depth=1 查看根目录哪个目录占用磁盘空间最大就行了


在我的服务器上,显示有一个文件夹/var占用47g,(一共50g),但是还是不知道那些文件的问题,继续排查

对于/var中那个文件比较大,仍然没法排查,后来又查找到使用该命令(find / -xdev -size +100M -exec ls -l {} \;),可以查询大于100M的大文件,然后可以从返回值里面找到大文件所在目录,最终也没找到太多,删除一些比较大的日志文件后,再次验证。

删除完成后,再次使用df -h去查询,容量使用率99%,这说明已经没有太大的文件占用导致服务器硬盘不足。这个时候,想到了可能是文件没有释放掉,因此,继续搜索。

看到<Linux 离奇磁盘爆满解决办法>这篇文章,这个时候,看到了搜索删除文件问题,就是下面的描述。

对于遇到df 和du结果不一致的情况,基本断定是文件虽然删除了,但是文件句柄仍然被持有,因此磁盘空间未释放,可以使用lsof命令( list open files)查看

查看根目录打开的文件,搜索删除的文件 lsof -n / |grep deleted (这里/是根目录)


在我的服务器上,lsof -n / |grep deleted执行后,看到很多和sendmail和postdrop进程有关的信息(当时因为使用的连接服务器工具的问题,没有保存记录,没法截取当时的图片了)

然后搜索和这两个进程相关的信息。ps -ef|grep "/usr/sbin/s

endmail"|grep -v grep |awk '{print $2}'|xargs kill使用这个命令,删除了sendmail的进程,但是没有打印出进程号,

最终进程杀掉了,文件还是占用,没有办法,考虑重启下机器试试,最终果然有效


总结:

1、三个命令

在搜索过程中,参考信息中看到 ,如何记忆du df lsof这3个命令

du ->Disk Usage

df ->Disk Free

lsof ->list open files

2、需要找到问题的根源。首先消息中间件报错,是因为没有磁盘空间了(占用100%),磁盘离奇爆满,是因为进程导致一些文件没有彻底删除掉,最终重启才解决。


3、本次没有考究,为什么会出现定时任务会出现占满进程,为什么会占满磁盘?有知道的小伙伴,能给提供些定时任务方面的知识,本人是后台,运维懂得渣渣,那点知识全来自百度。

参考信息:


Tags:linux磁盘满了

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言