公众号做了新需求:菜单的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的排查过程---复盘的更多相关文章

  1. 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  2. 记一个bug

    就在刚刚,测试叫我去看一个问题,有用户反应,在业务页面,出现了一部分重复的内容,而且点击按钮弹窗里,出现了只有个title,没有body的情况. 事情的现象就是这样.然后我就开始着手找原因了.首先声明 ...

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

    解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章 ...

  4. 解Bug之路-记一次存储故障的排查过程

    解Bug之路-记一次存储故障的排查过程 高可用真是一丝细节都不得马虎.平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug.偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题, ...

  5. 记一个关于std::unordered_map并发访问的BUG

    前言 刷题刷得头疼,水篇blog.这个BUG是我大约一个月前,在做15445实现lock_manager的时候遇到的一个很恶劣但很愚蠢的BUG,排查 + 摸鱼大概花了我三天的时间,根本原因是我在使用s ...

  6. 年年出妖事,一例由JSON解析导致的"薛定谔BUG"排查过程记录

    前言 做开发这么多年,也碰到无数的bug了.不过再复杂的bug,只要仔细去研读代码,加上debug,总能找到原因. 但是最近公司内碰到的这一个bug,这个bug初看很简单,但是非常妖孽,在一段时间内我 ...

  7. 记一次生产环境Nginx日志骤增的问题排查过程

    摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异 ...

  8. android一个下拉放大库bug的解决过程及思考

    android一个下拉放大库bug的解决过程及思考 起因 项目中要做一个下拉缩放图片的效果,搜索了下github上面,找到了两个方案. https://github.com/Frank-Zhu/Pul ...

  9. 记一个CRenderTarget中的BUG及解决办法

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...

随机推荐

  1. SCVMM 安装

    1.所有的物理机必须在域环境下 2.安装VMM和SQL使用的域账号尽量相同,并且唯一,尽量与管理hyper v主机使用的账号不相同

  2. docker : RabbitMQ ElasticSearch

    docker  运行RabbitMQ容器 docker run -d -p 5672:5672 -p 15672:15672 --name 命名 CONTAINER ID 放出5672  /  156 ...

  3. 《Beginning Java 7》 - 9 - Nested Types 嵌套类型

    嵌套类分为四种: static member class 静态成员类 nonstatic member class 非静态成员类 anonymous class 匿名类 local class 局部类 ...

  4. Struts2学习第4天--拦截器

    第1章     Struts2_day04笔记 1.1      上次课内容回顾 l  OGNL表达式 n  OGNL的概述 u  OGNL:对象图导航语言,是一门功能强大的表达式语言. n  OGN ...

  5. 【转】WinForm多线程学习文档

    源地址:https://www.cnblogs.com/jianglai11/articles/1708330.html 想学习更多,看<Windows 核心编程>

  6. [agc004d]Teleporter 暴力

    Description 维尼管辖的领土很大,我们可以抽象为n个城市,其中1号点为首都.这n个城市之有n条单向电缆,一条信息经过一条电缆进行传输所需时间会+1s,然而维尼并不能忍受时间白白被续,他要求从 ...

  7. pandas筛选数据。

    https://jingyan.baidu.com/article/0eb457e508b6d303f0a90572.html 假如我们想要筛选D列数据中大于0的行:df[df['D']>0] ...

  8. jmeter简单的接口请求

    骤是:在测试计划下面新建一个线程组,线程组下面添加请求,再线程下加入HTTP信息头管理器(如果要求传此参数的话)请求中添加结果和断言 1.打开页面添加一个线程组: 2.线程组中设置参数: 很重要的几个 ...

  9. Unity---解决重新调整游戏分辨率后,再运行游戏还是和之前分辨率一样的问题

    经历 上次在Unity做了个小游戏,发布的时候忘了取消默认全屏了. 于是在Unity重新发布了一下,可是出来后分辨率还是默认全屏. 当时百思不得其解 原因 主要是因为当用Unity发布一个新游戏的时候 ...

  10. 谷歌支付服务端详细讲解(PHP)

    前不久公司拓展海外市场,要接入google支付.刚开始一头雾水,相关的文档实在太少.而且很多东西都需要FQ,不过好在摸索几天后,总算调试通了. 前提:FQ 1.注册账号google账号 https:/ ...