1. 背景

近日,线上的服务出现异常,调用服务返回的JSON格式数据不完整,导致客户端解析异常,因此记录了本次的填坑之旅(nnd)...

2. 排查过程

2.1 服务器分析

登录到服务所在linux服务器,查看磁盘I/O信息iotop、CPU信息top、网络请求netstat -alnp等一通操作,木有发现相关问题。随执行了df -h查看磁盘占用

发现,系统盘根目录"/"的共计60G的磁盘占用100%,好吧,问题大概率就在这了。随后进入根目录,打算查看哪个文件夹占用最多,删除些文件,减小磁盘占用。

当执行du -hd 1查看每个目录的磁盘占用情况,发现total显示总计3.8G。有点莫名其妙,df显示磁盘占满,而du显示只占用了不到5%?

2.2 原因分析

通过上网搜索,原因在于:某些进程异常,输出了一个大文件在/分区,但由于某种原因,该文件删除了,进程却没有退出,则该进程一直在操作该大文件。

因为文件句柄并没有关闭,所以会造成df 显示剩余磁盘空间少,而du并不会。

2.3 解决

(1) lsof -n | grep deleted,找到大文件的进程是nginx

(2) 原来是将nginx的日志删除了,但nginx并没有重启,导致日志文件句柄一直存在

(3) 重新加载nginx:nginx -s reload

(4) 再次运行df -h发现磁盘占用率回归正常了,服务也返回正常。

2.4 注意

一般当根目录磁盘分配空间较小时,不要将服务日志、数据库索引文件等大文件放在根目录所在磁盘,而应该放置在另一块更大的磁盘之上,且定期需要备份和更新。

3. 参考

(1) https://blog.csdn.net/weixin_33743661/article/details/85985077

(2) https://www.cnblogs.com/softidea/p/4237084.html

工作采坑札记: 4. linux指定目录使用df和du的统计结果相差很大的更多相关文章

  1. 工作采坑札记:4. Hadoop获取InputSplit文件信息

    1. 场景 基于客户的数据处理需求,客户分发诸多小数据文件,文件每行代表一条记录信息,且每个文件以"类型_yyyyMMdd_批次号"命名.由于同一条记录可能存在于多个文件中,且处于 ...

  2. 工作采坑札记:3. Spark中es-hadoop插件异常解决

    1. Es-Hadoop异常: org.elasticsearch.hadoop.EsHadoopException: Could not write all entries [615/300864] ...

  3. 工作采坑札记:2. Hadoop中MultipleInputs的使用陷阱

    1. 背景 近日在一个Hadoop项目中使用MultipleInputs增加多输入文件时,发现相同路径仅会加载一次,导致后续的统计任务严重失真.本博文旨在记录异常的排查及解决方案. 2. 情景重现 ( ...

  4. 工作采坑札记:1. Hadoop中的BytesWritable误区

    1. 背景 近日帮外部门的同事处理一个小需求,就是将HDFS中2018年至今所有存储的sequence序列化文件读取出来,重新保存成文本格式,以便于他后续进行处理.由于同事主要做机器学习方向,对had ...

  5. Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下

    在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一. ...

  6. python实现上传文件到linux指定目录

    今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下. 环境:1.linux操作系统一台2.window ...

  7. linux查看磁盘系统df,du

    可以用df命令轻松地查看所有已挂载磁盘的使用情况 df df -h 把输出的文件单位换成文件可读的单位 du 命令显示特定目录的使用情况 du -c 显示总用量 du -h 人类可读性 du -s 每 ...

  8. linux指定目录安装软件后,程序找不到共享库问题

    以svn为例,64位centos yum install subversion --installroot=/usr/svn/后 执行svn命令,报错svn: error while loading ...

  9. linux查看空间情况----df与du命令

    1.查看整个磁盘空间使用情况,可以使用命令 :df   -h 2.获取当前的文件夹下的磁盘使用情况,可以使用如下命令:du --max-depth=1 -h 使用 du --max-depth=1 - ...

随机推荐

  1. 前端笔记-html

    前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...

  2. Elasticsearch: nested对象

    在处理大量数据时,关系数据库存在很多问题. 无论是速度,高效处理,有效并行化,可扩展性还是成本,当数据量开始增长时,关系数据库都会失败.该关系数据库的另一个挑战是必须预先定义关系和模式.Elastic ...

  3. mapbox-gl空间分析插件turf.js使用介绍

    mapbox-gl能够方便地显示地图,做一些交互,但是缺少空间分析功能,比如绘制缓冲区.判断点和面相交等等. turf.js是一个丰富的用于浏览器和node.js空间分析库,官网 http://tur ...

  4. ad_hoc详解

    import shutil from collections import namedtuple from ansible.parsing.dataloader import DataLoader f ...

  5. fputcsv

    1.a是從結尾添加,w是從頭添加,不知爲什麽 這樣寫最後一行會是錯的,似乎不會自動添加換行符,只有在最後以行寫上"\r\n",才會正確. $fp = sugar_fopen('fi ...

  6. CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数

    题目链接:https://www.luogu.org/problem/CF1228C 问题可以转化为:求质数 $p$ 在 $1\sim n$ 中的每个数中的次幂之和. 因为 $p$ 是一个质数,只能由 ...

  7. learning express step(十)

    when develop expree meet some errors, we show how to solve Error: No default engine was specified an ...

  8. Java进阶知识23 Spring对JDBC的支持

    1.最主要的代码 Spring 配置文件(beans.xml) <!-- 连接池 --> <bean id="dataSource" class="co ...

  9. luogu 2272

    Tarjan 缩点 拓扑排序 套路题

  10. java枚举类型总结

    java中的枚举类型是jdk1.5新增的一个东西,其本质是一个java.lang.Enum类的子类,每个枚举项是一个静态常量对象,由编译器为每个枚举项分配ordinal和name,其中ordinal是 ...