线上问题debug过程(cat,grep,tr,awk,sort,uniq,comm等工具的综合使用)
问题:发现线上到货单的数量,小于实际到货的数量. 怀疑一些隐藏的条件,将部分唯一码进行了过滤,导致数量变少.
开展了如下的跟踪流程:
1.找到其中一个明细的唯一码
grep 6180e-4b09f pms.log>> tmp1
2.查找出问题的方法所输出的日志
grep purchaseConfirm tmp1 >> tmp2
内容如下:
2017-02-28 16:14:25.040 [DubboServerHandler-10.26.235.193:20885-thread-100] INFO com.ejlerp.dal.framework.service.advice.AvoidRepeatInvokeAdvice.aroundAdvice - 拦截幂等性方法:purchaseConfirm,参数列表:[CallerInfo{tenantId=100033, operatorId=100163, timestamp=1488269665036, remark='null'}, 100114, [id=null,pmsArrivalRecordId=null,scanCode=D-A237-C78-157X,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=62567-52f59,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=64065-4c942,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=62928-4ce7e,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=64594-4c667,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=6238f-4b71b,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=6217b-55c88,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=62853-51e41,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=629e0-4b6f4,skuNo=null,skuId=0,uniqueCode=null,vendorId=0,purchaserId=0,arrivalNum=1,creator=100163,createdAt=Tue Feb 28 16:14:25 CST 2017,lastUpdater=null,lastUpdated=null,tenantId=100033,isUsable=null, id=null,pmsArrivalRecordId=null,scanCode=628a4-49850,skuNo=null,
其中包含了需要的全部请求唯一码,
3.将唯一码字段,抽取出来
cat tmp2 |tr ',' '\n'| grep scanCode| awk '{gsub("scanCode=","");print $0}' >>part1
得到日志中最全部分的唯一码
4.查询数据库中已经插入的唯一码 至part2文件
5.对part1和part进行排序
cat part1 | sort | uniq > med1
cat part2 | sort | uniq > med2
6.左边的集合大,很大一部分都是相同的,求左边存在而右边不存在的
comm -3 result2 result3
7.得到3个缺少的唯一码

8.经过查证,分别是平台换商品的sku,以及订单处理删除商品导致的唯一码失效
总结:
虽然线上问题很多时候可以通过sql就可以定位,
但是部分问题,可能只在debug日志中一闪而过,因此需要掌握更多的武器(如,cat,grep,tr,awk,sort,uniq,comm.....),来追踪工作中各种各样的问题
线上问题debug过程(cat,grep,tr,awk,sort,uniq,comm等工具的综合使用)的更多相关文章
- 记一次线上Curator使用过程JVM栈溢出解决
为了同学们看起来一目了,特按如下思路进行讲解. 1.出现的场景 2.分析及解决的过程 3.总结 最近公司要使用zookeeper做配置管理(后面简称ZK),然后自己就提前用虚拟机进行 ...
- 记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理
昨晚我正在床上睡得着着的,突然来了一条短信. 啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志. 能清楚看到是这条insert语句发生了死锁. MySQL如果检测到两个事务发生了死锁,会回滚 ...
- Linux基础第六课——grep|awk|sort|uniq
管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...
- [linux] grep awk sort uniq学习
grep的-A-B-选项详解grep能找出带有关键字的行,但是工作中有时需要找出该行前后的行,下面是解释1. grep -A1 keyword filename找出filename中带有keyword ...
- grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
grep:正则表达式,文本过滤工具,能够实现以指定的"模式(Pattern)"逐行搜索文件中的内容,并将匹配到的行显示出来. 模式:是由正则表达式的元字符,其他字符组合起来的匹配字 ...
- [转]线上GC故障解决过程记录
排查了三四个小时,终于解决了这个GC问题,记录解决过程于此,希望对大家有所帮助.本文假定读者已具备基本的GC常识和JVM调优知识,关于JVM调优工具使用可以查看我在同一分类下的另一篇文章: http: ...
- 一次线上GC故障解决过程记录
排查了三四个小时,终于解决了这个GC问题,记录解决过程于此,希望对大家有所帮助.本文假定读者已具备基本的GC常识和JVM调优知识,关于JVM调优工具使用可以查看我在同一分类下的另一篇文章: http: ...
- Linux(2)---记录一次线上服务 CPU 100%的排查过程
Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过 ...
- 一个线上 Maven 诡异问题排查过程
å. 前言 现在的大部分 Java 应用基本都是通过 Maven 进行组织的,不论是分布式应用还是单体集群应用往往都会通过一个 父 POM 加若干子 POM 完成项目的组织.然而这种多应用多模块的拆分 ...
随机推荐
- GitHub优秀的Android 开源项目
GitHub上优秀Android开源项目 转载自 : http://my.eoe.cn/sisuer/archive/3348.html http://my.eoe.cn/sisuer/archive ...
- 因子分析&主成分分析
因子分析和主成分分析的异同点: 1.主成分分析仅仅是一种数据变换而不假设数据矩阵有什么样的结构形式 因子分析假定数据有特定的模型,而且齐总的因子满足特定的条件 2.因子分析和主成分分析都是从相关矩阵出 ...
- iOS 之 深复制、浅复制
深复制不仅复制对象本身,对象持有的属性对象也做了复制. 浅复制之复制对象本身,不对里面的属性进行复制.
- HDU-1020-Encoding(水题,但题目意思容易搞错,英语的问题)
题目链接 http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1000&ojid=0&cid=7996&h ...
- SQL 查询同一天日期内的数据
条件如下: convert(date,a.dtClock) = convert(date,b.dtClock)
- Activity生命周期完全解析
**转载请注明出处:http://www.cnblogs.com/landptf/p/6309108.html** 生命周期是个老生常谈的问题了,今天做个汇总,全当是记个笔记,以后查找起来方便一些.下 ...
- 《HelloGitHub月刊》第10期
前言 这一年感谢大家的支持,小弟这里给大家拜年了! <HelloGitHub月刊>会一直做下去,欢迎大家加入进来提供更多的好的项目. 最后,祝愿大家:鸡年大吉- <HelloGitH ...
- SimRank协同过滤推荐算法
在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的 ...
- WUI->ACE权限
Configuration & Implementation of CRM Access Control Engine (ACE)-Part 1 https://blogs.sap.com/2 ...
- ArcGIS制图表达Representation实战篇1-边界线和行道树制作
ArcGIS制图表达Representation实战篇1-边界线和行道树制作 by 李远祥 即便是有了一些制图表达的基础,很多人还是对ArcGIS制图表达理解停留在表面,因为没有实际的强化训练是很难体 ...