记一次/dev/vda1满了之后,导致服务无法正常运行的排查过程

时间:2024-05-31 14:36:20

问题背景:

服务器中数据库出现死锁情况,排查后发现,数据库中大量写入日志的进程为running状态,日志无法写入。在kill掉对应进程后,仍然存在无法写入日志的情况。同时java服务的日志也不再打印,Jar包无法重启。

数据库死锁排查命令

1.查看当前正在进行中的进程
SHOW processlist
2.查看正在进行中的事务
SELECT * FROM information_schema.INNODB_TRX
3.查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
4.查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
5.查询是否锁表
SHOW OPEN TABLES where In_use > 0;

解决过程

在排查的过程中,发现通过vi 打开文件就会报错,Write error in swap file,Unable to open swap file for "cron", recovery impossible。随后查看通过服务器磁盘空间,发现/dev/vda1 的使用空间为0,进一步排查后发现,由于大量的日志堆满了根分区的空间,清理后系统恢复正常。排查指令如下

查看系统磁盘空间命令

1.查看磁盘占用情况
df -lh

/dev/vda1        40G   40G   0G   100% /

2.进入根目录
cd /

3.执行查看磁盘占用命令,此时可以看到不同目录下磁盘占用情况
du -sh *

4.找到占用磁盘最多的几个目录,进行排查,清楚垃圾文件即可