遇到问题一定要学会看日志

如果你生病了到医院,医生首先会问你哪里不舒服,然后通过你的描述来确认病情,如果还无法确认就得让你去验血或者拍片。最后根据结果来进一步确认你到底有什么病。

这个道理大家都明白,其实作为一个运维人,服务器在我们眼里就是我们的病人,而我们就是给它看病的医生。如何确认病情?我们自然是有自己的一些套路的。

其中有一项最重要的手段就是看日志。我平时在培训课程里也会经常强调这个事情,但有的同学就是记不住,遇到问题总是喜欢直接截图丢群里问,其实这样很难快速成长,下次遇到类似问题你还是不会解决。

昨天我兼职维护的网站突然有问题了,运营同学发了一个截图给我:

 

根据截图上的错误信息提示,我首先判定问题在于redis持久化出了问题。至于是因为什么呢?还不能确定。根据以往经验,很有可能是磁盘写出了问题,比如磁盘满了或者磁盘变只读了。

于是,我登录服务器首先看看磁盘使用情况,df查看没问题,接着我又touch了一个新文件,也没问题。

此时,就需要进一步继续排查问题了。如果换作是你,接下来你会做什么呢?正确做法是要查看redis日志!

但我,并没有去看日志,而是又去手动尝试做持久化操作,我只是想验证一下持久化到底是否正常。然而,我这个决定让我在此问题上多花了至少半小时时间。我手动执行了save操作,大概十几秒也成功了。此时,我意识到这个持久化耗时太久,这期间很有可能就会导致问题。

于是,我又查看了持久化文件dump.rdb,1.2G了,这个确实不小,但不至于导致问题发生。

既然,问题出在持久化上,那解决它有两个思路:1)关闭持久化(这个前提是你的业务不需要做持久化),2)想办法将持久化的速度提升。

经过和开发同学确认,redis持久化可以关闭,于是我直接关掉了持久化,然后重启服务。

此时的我,突然意识到要看一下redis日志。当然,也查到了该问题的根本原因。

妈的,我傻眼了,这么明显的问题,我竟然没有第一时间查日志。这不就是内存不够了么,临时解决办法只要重启一下服务就行了。当然长久之计肯定是要加内存的。好在,我们的业务不用持久化,干脆关闭持久化即可。

我分享这个小故事的目的就是要提醒各位,以后遇到问题一定要记得第一时间先去看日志!千万别像我似的,白白浪费了抢救业务的宝贵时间,这如果是线上十分赚钱的业务出问题,急需修复,我这样做很有可能就会损失好几个小目标了。

posted @ 2023-07-13 16:33  Linux运维阿铭  阅读(37)  评论(0编辑  收藏  举报