公司有一台测试服务器,部署了非常多的测试服务。某天同事发现部署的测试站点拒绝访问。通过多伦排查,最终确认是由于inode导致nginx无法正常提供服务,并且无法重新启动。
排查过程
- 确认问题。部署的站点拒绝访问,
curl localhost
也拒绝访问,应该不是安全策略问题。 - 检查nginx。
ps -ef|grep nginx
发现nginx进程,因为是测试服务器,所以直接重启。service nginx restart
重启失败,提示
Job for nginx.service failed because a configured resource limit was exceeded
- 是否日志文件等临时文件导致硬盘用尽。
df -h
,还有68%的硬盘空间可用,排除。 df -i
,发现inode耗尽。for i in ./*; do echo $i; find $i | wc -l; done
从根目录开始逐级统计子目录中的文件总数,定位到/var/spool/postfix/maildrop。
解决问题
- 确认可以删除这个目录的文件,先删除这个目录下的所有文件,重启服务。
- 这个目录文件数膨胀的原因,网上搜索了一下,基本确认是由于cron服务配置文件中
mailto=root
导致,可按照文章中的方法解决。