记录一次服务器日志引发磁盘爆满的问题

事情的起因是我在 tail -f 查看java日志时 发现日志不动态追加了,并且报了redis的 I/O 错误

程序报错如下
redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

开始排查

第一个想法是程序是否还在正常跑
结果程序正常

第2个想法是redis i/o 错误 RDB设置了上限?满了?还是内存满了
htop 看了下 内存还有 2个 g
又看了下 redis.conf 配置文件,maxmemory 并没有开启 ,

继续排查找解决方案,stop-writes-on-bgsave-error yes 这个命令是在redis最后一次保存操作异常后就禁止写入,好 给他改成 no
结果在我 :wq 时 ,提示磁盘满了,这就不对了

开始排查磁盘
命令:df -hl
文件系统 容量 已用 可用 已用% 挂载点
/xxx/xxx 40G 40G 0G 100% /
xxx 1.9G 0 1.9G 0% /dev
xxx 1.9G 0 1.9G 0% /dev/xxx
xxx 1.9G 536K 1.9G 1% /xxx
xxx 1.9G 0 1.9G 0% /xxx/xxx/xxx
xxx 380M 0 380M 0% /xxx/xxx/0

看来真是磁盘满了,但不知道是哪里满了,根目录全局扫描下
命令:du -s -h *|sort -nr
38G home
我这个文件夹下只跑了 java程序和部分日志不可能这么大啊,继续排查,进入home 继续 du -s -h *|sort -nr
发现 nohup.out 占到了 38个G

解决方法:cat /dev/null > nohup.out
程序恢复

思考下:
原因是我跑的程序是以 nohup java -jar -xms 。。。。 的方式,日志会不停的追加,其实可以有好多种方式解决

  1. nohup java -jar pos.jar > /dev/null 2>&1 &
    如果程序有自己的日志则不需要输出到 nohuo.out 文件

  2. rm -rf nohup.out
    简单粗暴删了

  3. echo ‘’ > nohup.out 或 cat /dev/null > nohup.out
    清空日志

这里用到了几个命令
htop:查看cpu 内存占用情况,也可以用 top
df -hl :查看整体磁盘空间占用情况
du -s -h *|sort -nr :查看当前目录下大文件空间占用情况
du -h :查看这个文件大小,并且自动换算单位 KB MB GB

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值