工作采坑札记: 4. linux指定目录使用df和du的统计结果相差很大
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的统计结果相差很大的更多相关文章
- 工作采坑札记:4. Hadoop获取InputSplit文件信息
1. 场景 基于客户的数据处理需求,客户分发诸多小数据文件,文件每行代表一条记录信息,且每个文件以"类型_yyyyMMdd_批次号"命名.由于同一条记录可能存在于多个文件中,且处于 ...
- 工作采坑札记:3. Spark中es-hadoop插件异常解决
1. Es-Hadoop异常: org.elasticsearch.hadoop.EsHadoopException: Could not write all entries [615/300864] ...
- 工作采坑札记:2. Hadoop中MultipleInputs的使用陷阱
1. 背景 近日在一个Hadoop项目中使用MultipleInputs增加多输入文件时,发现相同路径仅会加载一次,导致后续的统计任务严重失真.本博文旨在记录异常的排查及解决方案. 2. 情景重现 ( ...
- 工作采坑札记:1. Hadoop中的BytesWritable误区
1. 背景 近日帮外部门的同事处理一个小需求,就是将HDFS中2018年至今所有存储的sequence序列化文件读取出来,重新保存成文本格式,以便于他后续进行处理.由于同事主要做机器学习方向,对had ...
- Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下
在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一. ...
- python实现上传文件到linux指定目录
今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下. 环境:1.linux操作系统一台2.window ...
- linux查看磁盘系统df,du
可以用df命令轻松地查看所有已挂载磁盘的使用情况 df df -h 把输出的文件单位换成文件可读的单位 du 命令显示特定目录的使用情况 du -c 显示总用量 du -h 人类可读性 du -s 每 ...
- linux指定目录安装软件后,程序找不到共享库问题
以svn为例,64位centos yum install subversion --installroot=/usr/svn/后 执行svn命令,报错svn: error while loading ...
- linux查看空间情况----df与du命令
1.查看整个磁盘空间使用情况,可以使用命令 :df -h 2.获取当前的文件夹下的磁盘使用情况,可以使用如下命令:du --max-depth=1 -h 使用 du --max-depth=1 - ...
随机推荐
- vim 操作命令大全
转子:https://www.cnblogs.com/yangjig/p/6014198.html 和 https://blog.csdn.net/u010956473/article/detail ...
- v-solt插槽
https://www.jb51.net/article/157565.htm https://juejin.im/post/5c64e11151882562e4726d98
- Vim键盘图-红色圈标记为重点
- angularjs google map
google map display incorrect To remove the grayness, according to https://angular-ui.github.io/angul ...
- ValueError: Expecting property name: line 1 column 2 (char 1)
代码: import json str2 = '{"domain":"456"}' str1 = "{'domain':'123'}" pr ...
- 「NOI2019」弹跳(KD树)
题意:w×h网格中有n个点,m条边.每条边可以从p点花费t时间到一个矩形中的任意点,求1号点到每个点的最少时间. \(1<=w,h<=n<=70000,1<=m<=150 ...
- Activiti--Activity数据库
23张表 ACT_RE_资源库流程规划表 act_re_deployment 部署信息表 act_re_model 流程设计模型部署表 act_re_procdef 流程定义数据表 ACT_RU_运行 ...
- Oracle 物理结构(一) 文件-Inventory
一.Inventory的定义与作用 oraInventory存放的是Oracle软件安装的目录信息,Oralce的安装升级都需要用到这个目录,来看看Oracle文档中对这个目录的一点说明:All Or ...
- netstat 基本用法
Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字.如果你想确认系统上的 ...
- [Luogu] 线段树 2
https://www.luogu.org/problemnew/show/P3373 双懒标记下放 先乘后加 #include <bits/stdc++.h> using namespa ...