【开发日记】记一次公司服务器中Redis服务问题排查

问题

客户端访问服务器时提示一下报错:

img

描述为Redis报错,连接不了Redis。

排查

进入服务器终端,由于使用的是FinalShell界面中就已经提示了磁盘已经满了的状态,所以基本可以确定为因为磁盘满了导致的。

【查看磁盘占用】

使用以下命令查看当前系统磁盘占用:

df -h

命令输出如下所示:

文件系统        容量  已用  可用 已用% 挂载点
...
/dev/vda1        50G   49G     0  100% /
overlay          50G   49G     0  100% /data/docker/overlay2/...
...

结果显示确实是磁盘已经满了,并且基本是docker占用;但是磁盘容量只有50G,这不科学,公司服务器的磁盘容量再小也不可能这么小。

【检查磁盘挂载】

使用以下命令查看当前系统磁盘挂载情况:

lsblk

输出内容如下所示:

NAME   FSTYPE    SIZE MOUNTPOINT
sr0    iso9660 203.7M 
vda               50G 
└─vda1 ext4       50G /
vdb    ext4      200G

输出结果中FSTYPE是文件系统类型,表示设备上格式化了的文件系统类型。

输出结果中MOUNTPOINT是挂载点,表示这个设备当前被挂载到哪个位置上了。

结果显示确实是有一个200G磁盘未挂载。

【解决Docker占用】

进入上面docker目录cd /data/docker ,在该目录下执行以下命令来查看各目录大小:

du -h --max-depth=1 ./

这个命令会输出目标路径的空间使用情况,--max-depth=1表示命令遍历目录的深度

输出内容较多,所以这里省略了,通过以上命令输出结果来看目录containers占用最大,继续使用以下命令查看该目录的详细占用:

du -h --max-depth=1 ./containers/

命令输出内容如下所示:

...
12G     ./containers/c5a7aaa213d8077ab3792ec93029f7929882eb498ab944f77b93273e336b9e72
...

结果显示该容器占用磁盘较大,使用如下命令查看该容器目录对应的是哪个容器:

docker inspect -f '{{.Id}} - {{.Name}} - {{range .Mounts}}{{.Source}} -> {{.Destination}}; {{end}}' $(docker ps -q)

上面这个命令的作用是以我设定好的格式列出所有正在运行容器的核心信息。

输出内容如下所示:

...
c5a7aaa213d8077ab3792ec93029f7929882eb498ab944f77b93273e336b9e72 - /gitlab - ...
...

从结果中可以看到原来是gitlab占用太多导致。

进入/data/docker/containers目录下占用最多的容器目录,并使用 ls -lh命令展示所有的文件及目录占用大小发现占用最多的是一个log文件。

解决

到这里就已经找到罪魁祸首了,由于服务器磁盘太小,而gitlab一直在输出日志占用了太多的磁盘空间,由于服务器中的gitlab不是我搭建的,不知道是否有用,只能暂时把服务停掉删掉日志文件。

最后重启Redis服务和数据库服务,服务恢复,问题解决。

奉劝各位在服务器磁盘容量有限的情况下谨慎输出大量日志,非必要,不输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值