上一篇:马来西亚仙本那走起(2019-12-16 23:47:14)
文章大纲

系统突然有些api挂了的排查经历

2019-12-17 22:41:13

上周六有上线新的功能分支。


今早有同事反馈后台系统出了故障,同伴觉得可能是我上线的功能出了问题。


php错误日志里,有报错信息,错误信息不明朗,trace的路径也跟上周六上线的功能无关。


测试环境ok,我感到很无措。


只好直接线上调试,代码封装好多层,调试好一番工夫,总算找到了原因。


原因是redis的set操作出错。


进入redis客户端,验证了一下,的确如此,报如下错误:

(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.


意思说的redis快照无法保存到磁盘上。


用df -lh检查磁盘,并没出现满溢的情况。

暂时在redis里执行如下命令,跳过保存快照这一步来解决问题的:

config set stop-writes-on-bgsave-error no


快照保存,为何会失败,暂时还没找到原因,待研究。


本次排坑费时的主要原因,源自于我写的redis set数据的代码,都没进行错误校验。


 一开始写代码时,只是觉得可有可无,就算偶尔写redis没写成功,从redis读数据不存在时,就从mysql去读取好了。


没想到会遇到像今天这样的情况,set没成功,程序直接报500错误了。


通过今天的经历,收获就是:

收获:redis存储数据,做好错误日志记录


不过还是觉得应急能力太弱,这种无缘无故代码出错,理应就应该想到mysql、redis这些上面去。


本文是翟码农个人博客蓝翟红尘里php分类下的文章,转载请注明出处:http://www.zhai14.com/blog/35710c13d1a161eb00f559f5aed8b69d.html








上一篇:马来西亚仙本那走起(2019-12-16 23:47:14)
我要评论
评论列表