记一个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、如果对微信公众号的业务比较熟悉,肯定就能预知这种情况。提交沟通好,或者直接写个接口,批量同步下就好了

原文地址:https://www.cnblogs.com/softidea/p/9795300.html

时间: 2024-11-05 21:56:50

记一个bug的排查过程---复盘的相关文章

Markdown使用时的一个BUG的发现过程

前言 遇到bug应该只要提交给官方就好了.但是我正好在学习Web前端,遇到了问题就正好运用新学的知识试着自己处理一下.恰好我又刚好运用新学的知识找到了问题,于是就记录一下自己遇到问题和解决的过程. 问题1-部分内容丢失 写了大段的文章,并且也成功保存到草稿了.但是之后打开的时候发现后半部分都没有了,并且页面显示也有问题.显示的样子是这样的: 再次打开保存的草稿后,一部分内容会跑到文本框外面去,如上面最后一行的样子.然后这部分在文本框外面的内容就丢失了.当时只是看到了这个情况,但是并没有什么想法.

记一个bug

就在刚刚,测试叫我去看一个问题,有用户反应,在业务页面,出现了一部分重复的内容,而且点击按钮弹窗里,出现了只有个title,没有body的情况. 事情的现象就是这样.然后我就开始着手找原因了.首先声明,这个页面是有富文本的页面,用的是UEditor.这个问题的原因不难找,大约也就用了5分钟左右,但是对于这个现象和现象背后的思考,以及是否有解决方案,没有太好的想法. 第一步,去测试环境看了下,发现是好的(过程需要来回切换账号所以有点费时). 第二步,对比了一下代码,发现也是相同的. 第三部,打断点

记一个 bug

nofuck.cpp 1 #include <map> 2 3 static std::map<int, int> m; 4 5 std::map<int, int>& GetMap() 6 { 7 return m; 8 } main.cpp 1 #include <map> 2 3 std::map<int, int>& GetMap(); 4 5 class Fuck{ 6 public: 7 Fuck(){ 8 GetMa

centos7(redhat7) 中localtime_r有一个BUG

centos7(redhat7) 中localtime_r有一个BUG.具体过程如下:step1 后台进程启动.step2 用户修改时区.step3 后进进程在使用localtime_r取时间时,不会更新时区.取得时间还是旧的时间.但是localtime使用新的时区计算时间.step4 此时再使用localtime调用后,localtime_r才使用新时区,计算时间.PS, centos6无此问题. BUG 2 centos7.5,进程使用gettimeofday (&tv,&tz);不会

解Bug之路-记一次中间件导致的慢SQL排查过程

解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章. Bug现场 我们的分库分表中间件在经过一年的沉淀之后,已经到了比较稳定的阶段.而且经过线上压测的检验,单台每秒能够执行1.7W条sql.但线上情况还是有出乎我们意料的情况.有一个业务线反映,每天有几条sql有长达十几秒的超时.而且sql是主键更新或主键查询,更奇怪的是出现超时的是不同的sql,似

记一个界面刷新相关的Bug

今天遇到一个比较有意思的bug, 这里简单记录下. Bug的症状是通过拖拉边框把我们客户端主窗口拖小之后,再最大化,会发现窗口显示有问题, 看起来像是刷新问题, 有些地方显示的不对了. 这里要说明的是我这里的主窗口是非常复杂的窗口, 里面集成了很多组件(cpmponent),有很多层的子窗口. 这个问题只有在特定条件下才会发生, 正常情况下都是好的. 遇到这种问题,我们怎么处理? 首先当然是观察症状, 究竟是刷新问题, 还是Layout出错了. 我们可以通过Spy++查看窗口层次是不是正确, 窗

记一次erlang 节点CPU严重波动排查过程

新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增大,CPU也激增. 网络流量变化和从性能计数器结果上并不符合,服务相关业务较为复杂,先找出那个业务占用网络流量. 2. iftop 找出流量最大的几个目标IP,并且周期的流量变为0随后激增. 通过IP 知道是外部http接口地址,因为接口调用是异步进行的,性能计算是执行开始记录的,而不是结束记录,因

小问题不简单,一个无线故障的排查过程

本文不是为了说明解决了多难的问题,而是提供了查找app连接服务端的问题的几种解决问题的思路和方法 研发人员反映有个手机app业务在3G网络下刷新不了,是连接的测试环境的服务,通过办公网和wifi正常. 研发认为可能是在3G网络或者是服务器所在IDC机房问题,问题出现有一段时间了. 真这么神奇?专治疑难杂症30年的我得查查- 找来一台andriod手机,root过的,安装ssh终端模拟器app,希望直接连接网络进行测试. 发现能ping ,说明网络是通的,不能telnet服务端口. 想通过curl

记crond导致备份失败的排查过程

今天上班的路上收到一条短信,显示线上所有实例备份都失败了.备份失败是大事,于是到公司的第一件事儿就是排查备份失败的原因. 这两天迁移了数据库管理平台,当然涉及到数据库备份功能,备份失败肯定和平台迁移有一定关系,我们先聊聊线上备份方案: 目前线上的备份方案是: 1.有一个前端页面可以配置备份任务 2.备份任务配置好了,会自动刷新到系统的crontab定时通过ansible远程执行. 排查过程: 1.查看备份报告,显示所有的备份文件大小都是0,初步估计是备份失败了而不是元数据没有更新的问题. 2.去