成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一次磁盤占用率 100% 的排查記錄

存儲 數據管理
第一個命令就是 df -h,來查看磁盤的占用情況。df 是 disk free 的縮寫,用于顯示目前在 Linux 系統上的文件系統磁盤的使用情況統計。

最近遇到一個服務器的問題:磁盤滿了,占用率 100%~

這個問題太常見了,于是先來排查一波是哪些文件占用了大量磁盤。

一、排查磁盤占用率100%

1.1 查看磁盤使用的大致情況

第一個命令就是 df -h,來查看磁盤的占用情況。df 是 disk free 的縮寫,用于顯示目前在 Linux 系統上的文件系統磁盤的使用情況統計。

如下圖所示,可以看到磁盤占用率 100%。

圖片

第一列 Filesystem 代表文件系統的名稱。

第二列 Size 表示文件系統的大小。

第三列 Used 表示已占用多大的磁盤空間。

第四列 Avail 表示可用磁盤空間的大小。

第五列 Use% 表示磁盤使用率多大,100% 表示磁盤占滿了。

第六列 Mounted On 表示掛載在哪個目錄。

從上面的結果可以看到有個文件系統占用率為 100%,為/dev/sda2?,掛載的目錄為 /,那我們就來看下這個目錄下都存放哪些大文件吧。

1.2 查看目錄下的大文件

使用 du 命令來顯示目錄或文件所占用的磁盤空間大小。

# 先進入到根目錄 `/`
cd /
# 列出當前目錄或文件的總大小,并按倒敘排序
du -sh /* | sort -nr

找到最大的目錄 var,占用 100 多個 G。進入到這個目錄中,然后再次執行 du 命令

du -sh /var/* | sort -nr

這樣一級一級的找,就能找到占用空間最大的文件了。

最后發現是 Logstash 容器的日志文件占用太大,,截圖如下。大家看到的占用 4.8G,這是我清理日志之后的大小,之前這個容器占用 90 多個 G。

圖片

1.3 Logstash 容器為什么占用磁盤這么大

為啥 Logstash 容器會有這么多日志???

我們看下這個日志里面的內容就知道了。使用 tail 命令查看文件的最后 100 行數據。

tail -n 100 <容器 id >-json.log
# 也可以通過 docker logs 來查看日志
docker logs --tail=100 159

發現全都是 Logstash 解析日志時打印的信息。如下圖所示:

圖片

每次 Filebeat 采集日志后,傳輸給 Logstash 后,Logstash 都會打印一條解析后的日志。

而我們的后端服務會打印很多日志,傳輸給 Logstash 的日志會越來越多,ogstash 又會瘋狂的寫自己的解析日志,久而久之,磁盤就被占滿了。

問題原因找到了,那解決方案是什么呢?

二、容器日志清理方案

  • 方案一:手動清理日志文件,可解燃眉之急,治標不治本。
  • 方案二:腳本定期清理日志文件,缺點是日志文件全丟了,無法追溯。
  • 方案三:限制所有容器的日志文件大小,治本,缺點是需要重新創建容器和啟動 docker 鏡。

2.1 方案一:手動清理方案

cat /dev/null > /var/lib/docker/containers/容器id/容器id-json.log

注意:這里沒有使用 rm? 方式來刪除文件。使用 rm -rf? 方式刪除日志后,通過 df -h? 會發現磁盤空間并沒有釋放。原因是在Linux或者Unix系統中,通過 rm -rf 或者文件管理器刪除文件,將會從文件系統的目錄結構上解除鏈接(unlink)。如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。正確姿勢是cat /dev/null > *-json.log,當然你也可以通過rm -rf刪除后重啟docker。

2.2  方案二:腳本定期清理

提供一個清理腳本;

#!/bin/sh 

echo "======== start clean docker containers logs ========"

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done

echo "======== end clean docker containers logs ========"

給腳本添加權限;

chmod +x clean_docker_log.sh

執行腳本的命令;

./clean_docker_log.sh

大家可以把執行腳本的命令加到 Linux 的定時任務中就可以了,這里不做展開。

下面要說的是我目前使用的方案。

2.3 方案三:限制 Docker 容器日志大小

新建 /etc/docker/daemon.json,若有就不用新建了。

vim /etc/docker/daemon.json

配置內容如下:

{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}

max-size=500m,表示容器的日志文件大小上限是 500M, max-file=3,表示容器有三個日志,第一個滿了 500M之后就寫第二個,第二個滿了 500M就寫第三個,如果第三個滿了,就清空第一個日志文件,重新寫第一個日志文件。如下圖所示:

圖片

寫了 3 個日志文件,最大不超過 500M

改完之后需要重啟 docker 守護進程。

systemctl daemon-reload
systemctl restart docker

另外這種方式只對新建的容器有效的,之前的容器不生效,所以我又把之前的 Logstash 容器刪除了,然后重新啟動了一個 Logstash 容器。

參考資料:

https://www.cnblogs.com/gcgc/p/10521005.html

Linux df 命令 https://www.runoob.com/linux/linux-comm-df.html

Linux du 命令 https://www.runoob.com/linux/linux-comm-du.html

責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2019-07-16 06:43:18

LinuxCPU占用率

2019-01-21 11:17:13

CPU優化定位

2022-11-16 08:00:00

雪花算法原理

2020-09-28 13:54:12

Chrome OSChromebook更新

2020-08-27 21:36:50

JVM內存泄漏

2025-03-17 10:01:07

2009-08-13 17:53:59

控制CPU占用率

2020-04-14 15:50:43

Windows10硬盤卡死

2016-09-21 12:26:47

Windows 10CPU禁用

2022-10-25 08:56:16

2010-02-24 08:09:09

Windows 7內存占用

2021-05-13 08:51:20

GC問題排查

2019-03-15 16:20:45

MySQL死鎖排查命令

2013-12-10 22:06:22

開源系統Linux系統

2019-07-24 11:52:11

CPU服務器面試官

2020-12-22 06:35:22

物聯網大數據傳感器

2023-04-06 07:53:56

Redis連接問題K8s

2023-03-29 09:36:32

2018-01-15 14:50:49

APP轉讓App賬號

2022-11-03 16:10:29

groovyfullGC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品s色| 欧美日韩不卡在线 | 午夜精品福利视频 | 欧美日韩国产综合在线 | 九九热免费视频在线观看 | 日韩中文字幕在线播放 | 国产成人精品久久二区二区91 | 欧美一区二区在线观看 | 日韩精品一区中文字幕 | 2018天天干天天操 | 欧美高清视频一区 | 草草视频在线免费观看 | 中日韩毛片 | 亚洲精品免费看 | 一区二区三区日韩 | av网站免费观看 | 中文字幕乱码亚洲精品一区 | 精品视频在线免费观看 | 不卡一区二区三区四区 | 亚洲一区国产 | 伊人伊成久久人综合网站 | 亚洲毛片一区二区 | 国产成人免费一区二区60岁 | 成人精品一区二区户外勾搭野战 | 一区二区三区四区在线 | 久草免费在线视频 | 九一精品 | 一级aaaa毛片 | 久久国产传媒 | 黄色在线免费观看视频网站 | 日日操日日干 | 国产精品视频免费观看 | 国产一级精品毛片 | 久久久区 | 中文字幕在线看人 | 国产乱码久久久久久 | 精品一区二区久久久久久久网站 | 一区二区福利视频 | www.久久精品 | 久久高清免费视频 | 91就要激情 |