记一个bug的排查过程---复盘
公众号做了新需求:菜单的click事件,支持多条客服消息。
上线后,只有一个功能不好使,是点击菜单,预期发一条文本类型的客服消息。
实际操作时,点这个菜单项后,什么也没有发生。
elk上看日志,也没有什么报错。也不应该有报错,如果后端服务异常,公众号上会提示,“服务不可用”
如果在后台打开 菜单管理 页面,什么也不做,再点个 保存 ,菜单 的功能就恢复正常了。
====================================================================
当时把注意力锁定在这个更新操作上了【原因是测试人员一直在讲点下更新就好了,根据事后的分析,肯定也执行了“同步到微信”的操作】,
但更新操作就是一个纯粹的db操作,不会有缓存【当时有同事分析是缓存造成的问题】,不过这种 点下“更新”就好了事情,与以前的缓存问题,的确很像。
但点击菜单后, 期望的纯文本客服消息,就是没有出来。
一下子僵住了。
==========================相持阶段==========================
缓存的原因----排除掉。因为表小,没有使用缓存
因为是线上,后端服务也没有打印sql日志,也搞不清楚是不是sql的问题。但根据现象,如果sql有问题,重新 保存 后,肯定也会不正常的。
sql错误-----可以排除掉
时间一秒一秒过去
压抑、压抑的气氛,一直罩在头顶
===============================拐点===============================
突然想到,有个菜单管理中,“同步到微信”接口,有一个变动:同步到微信上的 菜单 key有变化:线上key是客服消息记录的kf_msg_id,因为当时只支持一条客服消息
这次的需求是要支持多条客服消息,因此这个key现在是menu记录的menu_id
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
没有执行“同步到微信”操作之前,没有收到客服消息,并且没有报错的原因是,使用kf_msg_id去查menu表中当menuId使用,肯定查不出结果了。
=============================复盘=============================
复盘:
(1)要多了解业务,把各种变更造成的影响,要能提前预知到
(2)要耐心、详细了解问题出现的现象、浮现或不固定出现的操作流程
(3)要看对日志
1、从问题排查角度看,问题解决时,除了执行“更新”操作,肯定还执行了“同步到微信”的操作。但当时,没有仔细问,就把这个忽略掉了------最有问题的地方,反而被忽略掉了
2、排查时,没有把注意力锁定在查看接口返回值,因为当时线上的数据,点击菜单对应的click事件,只对应一条客服消息。会直接返回,这个时候统一处理wx回调的服务,肯定有日志【当时看错了服务了---这个地方要深刻检讨,这个错真是太低级了-----难道是对自己的代码质量太自信,认为没有必要看日志??】
如果看到返回值为空,则离找到问题根源,只有一步之遥了
3、如果对微信公众号的业务比较熟悉,肯定就能预知这种情况。提交沟通好,或者直接写个接口,批量同步下就好了
记一个bug的排查过程---复盘的更多相关文章
- 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)
[问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...
- 记一个bug
就在刚刚,测试叫我去看一个问题,有用户反应,在业务页面,出现了一部分重复的内容,而且点击按钮弹窗里,出现了只有个title,没有body的情况. 事情的现象就是这样.然后我就开始着手找原因了.首先声明 ...
- 解Bug之路-记一次中间件导致的慢SQL排查过程
解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章 ...
- 解Bug之路-记一次存储故障的排查过程
解Bug之路-记一次存储故障的排查过程 高可用真是一丝细节都不得马虎.平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug.偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题, ...
- 记一个关于std::unordered_map并发访问的BUG
前言 刷题刷得头疼,水篇blog.这个BUG是我大约一个月前,在做15445实现lock_manager的时候遇到的一个很恶劣但很愚蠢的BUG,排查 + 摸鱼大概花了我三天的时间,根本原因是我在使用s ...
- 年年出妖事,一例由JSON解析导致的"薛定谔BUG"排查过程记录
前言 做开发这么多年,也碰到无数的bug了.不过再复杂的bug,只要仔细去研读代码,加上debug,总能找到原因. 但是最近公司内碰到的这一个bug,这个bug初看很简单,但是非常妖孽,在一段时间内我 ...
- 记一次生产环境Nginx日志骤增的问题排查过程
摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异 ...
- android一个下拉放大库bug的解决过程及思考
android一个下拉放大库bug的解决过程及思考 起因 项目中要做一个下拉缩放图片的效果,搜索了下github上面,找到了两个方案. https://github.com/Frank-Zhu/Pul ...
- 记一个CRenderTarget中的BUG及解决办法
转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...
随机推荐
- ASP .Net Core 2.0 修改默认端口
ASP .Net Core 的默认端口是5000,如果想在同一台服务器上运行多个实例,就不能都监听5000端口了,需要每一个实例都监听不同的端口.当然,如果您正在使用IIS或者Jexus来托管,可以不 ...
- oracle-01427
Oracle / PLSQL: ORA-01427 Learn the cause and how to resolve the ORA-01427 error message in Oracle. ...
- 《Beginning Java 7》 - 2 - Cloning 克隆
Cloning 分两类:影子克隆 shallow cloning 深度克隆 deep cloning * 调用 clone() 需要 implments Cloneable.此函数为 protecte ...
- 在eclipse上的hdfs的文件操作
参考:http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/?tdsourcetag=s_pcqq_aiomsg: http ...
- S:List
描述 写一个程序完成以下命令:new id ——新建一个指定编号为id的序列(id<10000)add id num——向编号为id的序列加入整数nummerge id1 id2——合并序列id ...
- php从文本读入数据,处理结果再导入到文本
1,php从文本逐行读入数据,保存到数据组.使用fopen读取文本内容,逐行读取文本是$majorId = trim(fgets($rfile, 4096));. $rfile = fopen(&qu ...
- dbproxy-id生成器
id生成器使用的是snowflake, 需要执行 snowflake_init(region_id, worker_id); 而region_id和worker_id是在配置文件中配置的 networ ...
- python学习笔记1.4
注释不被程序执行的辅助性说明信息- 单行注释:以#开头,其后内容为注释# 这里是单行注释- 多行注释:以'''开头和结尾''' 这是多行注释第一行这是多行注释第二行 ''' 保留字and elif i ...
- 浅谈SLAM的回环检测技术
什么是回环检测? 在讲解回环检测前,我们先来了解下回环的概念.在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说 ...
- centos崩溃后如何修复
首先看能不能进单用户模式,能进去,就用mount -o remount,rw / 重置成可写的. 不能进单用户模式,就进入光盘救援模式,进去挂载了系统,这时候通常是必要的动态静态库出了问题,先应该做的 ...