生产事故——磁盘使用率爆仓

哈喽哈喽大家猴,我是把代码写成bug的大头菜。公众号:大头菜技术(bigheadit)。原创不易,但欢迎转载。

今天不知道为啥醒得特别早,可能就是缘分吧。醒来一看微信,就发现线上的服务器的磁盘使用率超过70%,真是早起的鸟儿有bug修。。。。。

磁盘使用率1

当时我就立马跑去看看监控,看看cpu,内存,io这些是否都正常。看了一圈,发现除了磁盘异常外,其他一切都正常。
监控

我当时是7点左右看到的消息,看到后,磁盘的使用率达到72%,超过了设定阈值70%。就如上图的红色箭头所示。

当时我是直接进入服务器,用df -h查看服务器的磁盘使用空间。

看到上图,当时我人都傻了。2.7T空间,然后使用才5%,哪来的70%磁盘使用率。

后来深呼吸,喝口冰水冷静一下,发现,公司用的是容器,而df -h查的是物理服务器的磁盘空间。当时我情况比较紧急,我也忘了什么命令可以查容器的硬盘空间。只好去谷歌输入框输入:“如何查看容器的磁盘空间”

很快,我就搜到相关命令:docker system df -v

然而,等待我的却是

docker system df -v
-bash: docker: command not found

牛逼!!!牛逼!!!

好吧,看来是没办法通过命令查看哪个地方用的磁盘空间比较大了。不过又比较紧急,只能用最笨的方法:遍历查询。但是这个遍历,我优先遍历查看日志文件。没想到一击即中,立马就找到了磁盘爆满的根本原因。

你看,从2月25号日志到现在3.21号的日志都在,总共占用了20G。我问了运维每台容器分配30G。20G/30G=66.7%。单纯日志已经占用磁盘空间的66.7%,再加上其他的应用,占用70+%。实锤了,找到真凶了。我也没想到这么快找到。

至于为什么我一开始就找日志文件呢?

主要是因为经验吧,因为之前别的服务器也出现过磁盘使用率问题,当时也是因为日志文件问题。简单总结一下,虽然经验不总是可靠,但排查线上问题时,经验又总是那么有用。因此,排查问题时,一开始要根据监控数据,进行排查,不要先入为主,用想当然去排查,就是不用经验去想问题。先跳出固有圈子,根据实实在在的监控指标数据排查。实在没办法时,再用经验去排查也不迟。

那么现在我们已经定位到磁盘空间问题的根本原因:日志文件占用空间过多。

那接下来应该怎么做呢?

只能删文件,腾出空间。遇到磁盘使用率问题,除了删文件,还有其他办法吗?有,扩大磁盘空间,但多大才够,这方案显然不是最高效的解决方案

这时候终于可以搬出好久没使用的:rm -rf命令了。

我当时就直接把2月份的日志都删除了。

立马看一下监控图

磁盘使用率立马断崖式下降到70%以下,首要任务让服务器正常运行再说。

到这里后,你以为就结束了吗?。。。。。。。并没有

交代一下服务器的背景:四台服务器,每台服务器2核8G。

删文件前:

删文件后:

我们可以看到,删文件的操作,的确暂时让磁盘的使用率从71%降到63%。但是,你发现没发现另一个问题。

另外2台服务器的磁盘使用率只有1%。但是另外2台的服务器的日志文件都占了大约20G(容器的硬盘空间30G)

这让我再一次傻眼儿了!!!!

明明大家都占用了20G,2台服务器70%的使用率,另外2台服务器的使用率却高达1%。

amazing!!!!!

害,母鸡道点算(粤语)!!!

当时心想,先不管了。服务器现在也正常服务了,等上班后,再和运维聊聊,找找原因。毕竟现在才7点,离上班还有3个小时。没法找运维的!!!

带着满怀激动的心情,终于等到10点上班了。

经过和运维的一番描述(battle)后,终于找到了答案,解开了疑惑。

其实,就是监控数据的获取有bug,从而导致数据不准确。

最后我还抓着运维,问了一下如何查看容器的硬盘使用空间?

然而。。。。他好像也不太会。。。。

好了,今天的bug顺利解决了。就是查看容器的命令,到现在也没找到。如果你有办法,留言通知我!感谢!

推荐阅读

全部评论

相关推荐

03-15 14:55
已编辑
门头沟学院 golang
bg:双非学院本 ACM银 go选手timeline:3.1号开始暑期投递3.7号第二家公司离职顽岩科技 ai服务中台方向 笔试➕两轮面试,二面挂(钱真的好多😭)厦门纳克希科技 搞AI的,一面OC猎豹移动 搞AIGC方向 一面OC北京七牛云 搞AI接口方向 一面OC上海古德猫宁 搞AIGC方向 二面OC上海简文 面试撞了直接拒深圳图灵 搞AIGC方向一面后无消息懒得问了,面试官当场反馈不错其他小厂没记,通过率80%,小厂杀手😂北京字节 具体业务不方便透露也是AIGC后端方向2.28约面 (不知道怎么捞的我,我也没在别的地方投过字节简历哇)3.6一面 一小时 半小时拷打简历(主要是AIGC部分)剩余半小时两个看代码猜结果(经典go问题)➕合并二叉树(秒a,但是造case造了10分钟哈哈)一天后约二面3.12 二面,让我挑简历上两个亮点说,主要说的docker容器生命周期管理和raft协议使用二分法优化新任leader上任后与follower同步时间。跟面试官有共鸣,面试官还问我docker底层cpu隔离原理和是否知道虚拟显存。之后一道easy算法,(o1空间解决 给定字符串含有{和}是否合法)秒a,之后进阶版如何用10台机加快构建,想五分钟后a出来。面试官以为45分钟面试时间,留了18分钟让我跟他随便聊,后面考了linux top和free的部分数据说什么意思(专业对口了只能说,但是当时没答很好)。因为当时手里有7牛云offer,跟面试官说能否快点面试,马上另外一家时间到了。10分钟后约hr面3.13,上午hr面,下午走完流程offer到手3.14腾讯技术运营约面,想直接拒😂感受: 因为有AIGC经验所以特别受AI初创公司青睐,AIGC后端感觉竞争很小(指今年),全是简历拷打,基本没有人问我八股(八股吟唱被打断.jpeg),学的东西比较广的同时也能纵向深挖学习,也运气比较好了哈哈可能出于性格原因,没有走主流Java路线,也没有去主动跟着课写项目,项目都是自己研究和写的哈哈
烤点老白薯:你根本不是典型学院本的那种人,贵了你这能力
查看7道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务