破案:linux下存储空间不足引发的一系列’惨案‘告破了!!!
故事线是这样子的:
某天项目经理给了个紧急任务给小小,实现一个数据统计功能,并可以多条件查询,提供订单钻取功能。
小小撂下手中的多项任务,操手即敲,很快功能实现了,并进行了数据的测试,完美!
小小将项目更新发布到生产环境,并简单测试通过,通知可以使用。
不一会儿,一个消息过来了,该功能模块在进行多条件查询后,进行钻取功能时,报错。
经排查,后台报“Got error 28 from storage engine”错误,一万字草泥马奔腾而过… …
是的,存储引擎不够,无法执行此SQL语句。这种情况小小之前经历过,毕竟之前删了服务器不少没用的文件。
好!言归正传。出现这种情况,其原因就是服务器存储不足,已无法支持数据库进行复杂查询所需的临时目录空间了。
# 查看linux存储占用情况,很显然不容乐观
df -h
那么来查询下到底哪些目录占用了那么多存储吧
# 该命令的意思是查询根目录以下一个层级目录的存储使用情况
du / --max-depth=1 -h

通过其他博客了解到,linux里的文件被删除后没有被释放,是因为该文件可能当时正在使用,虽然文件的状态为已删除但是读取该文件的进程实际是没有删除的,也就是占用着进程
# 查询已删除文件占用进程的情况
lsof | grep delete
截图只截取了一小部分,实际上还有平时删除tomcat目录下的catalina.out等日志文件
很明显catalina.out本身就过大达到很多G,在删除过程后还占用着进程,自然存储不够用了
# 使用kill -9 [进程号] 命令杀死进程即可
注意不要直接杀死主进程,这样数据库服务和tomcat都会停止的
至此,存储空间不足问题解决。
本文记述了一次因Linux服务器存储空间不足导致的功能模块报错问题。通过一系列排查与操作,包括检查存储占用情况、查询已删除文件占用的进程及释放对应进程,最终解决了存储空间不足的问题。
482

被折叠的 条评论
为什么被折叠?



