愿时光能在字里行间里留下一些温暖的印记

一个奇怪的emoji图标BUG引起的连锁反应,差点酿成线上事故

最近做了一个H5小游戏,要助力点赞,用到了微信oauth的 nickname 和 openid ,在测试环境下一切正常,并且召集多人测试也都反应正常,之后某位同事反馈点击没反应,于是我认为他是手机css界面遮挡按钮原因,就没往心里去,于是放到了线上,幸好又给客户做了一波测试,核验数据后发现数据错的离谱,并且没有规律。把代码复核一遍,还是没问题。

越来越焦虑,于是把mysql二进制日志恢复出来,开始一条一条的过sql,发现在某一刻同一条sql执行了很多次,再看sql执行时间,刚好是同事点击无响应反馈那个阶段,想起同事昵称中有一个emoji图标,开始验证,调整了mysql编码到utf8bm64 后问题迎刃而解。

真是运气好,否则活动上线后果很严重,毕竟是给500强企业做活动,一不小心就会引发连锁反应。

也总结两个经验

sql 事务的重要性,必须判断sql是否执行成功

如果不确定代码的严谨性,宁愿中断业务流程,把不可控节点降到最低

 

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注