今早正在愉快地使用Flutter开发客户端的时候,突然发现所有接口都使用不了了,觉得很奇怪,服务器上什么都没有动怎么突然不行了呢?
于是登录CentOS服务器查看Spring Boot服务的日志,发现了以下异常:
1
2
3
4org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is java.lang.IllegalStateException: Unable to create the directory [/tmp/tomcat.1964230947136987004.8000] to use as the base directory
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:157)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
哦,原来是Tomcat无法创建它的临时工作目录了。
于是就执行
1df -h
查了一下服务器的硬盘信息:
1
2
3
4
5
6
7Filesystem Size Used Avail Use% Mounted on
/dev/vda1 99G 94G 0 100% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 532K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/1000
果然!根目录下使用率100%,硬盘被占满了!这是个严重的问题,不过该怎么排查哪些文件占用的空间呢?查了一番资料,发现使用下面命令可以一层层的跟踪排查:
1du -x -m --max-depth 1 /
先从根目录开始:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[[email protected] log]# du -x -h -m --max-depth 1 /
5 /tmp
4104 /root
668 /opt
1 /media
55960 /var
708 /WWW
1 /srv
38 /etc
2544 /home
27338 /data
1 /mnt
214 /boot
4115 /usr
1 /lost+found
95687 /
OK,发现/var目录占用最多,于是就怀疑是日志文件的问题,因为系统日志都在/var目录下。接着进入/var/log目录,执行命令确定一下:
1ll -h
果然,全部都是日志文件占用的空间:
1
2
3
4
5-rw------- 1 root root 6.8G Oct 10 11:22 messages
-rw------- 1 root root 7.9G Sep 15 03:33 messages-20190915
-rw------- 1 root root 9.9G Sep 22 03:37 messages-20190922
-rw------- 1 root root 11G Sep 29 03:11 messages-20190929
-rw------- 1 root root 11G Oct 6 03:49 messages-20191006
也可以执行命令查看目录所占的空间:
1du -sh *
服务器一共就100G的存储空间,却被这些日志文件占去了一大半,查看了一下内容,发现大部分都是服务器上的定时任务的信息,因为定时任务非常频繁,而且打印的信息量比较大,看着这块要优化一下了。
先把这些日志删除一下,保证服务正常:
1rm messages*
删除后,启动服务器,一切终于正常了!