线上问题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 完成项目的组织.然而这种多应用多模块的拆分 ...
随机推荐
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载)
原文:http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker 192.168.224.20:22122 ...
- chkdsk
通过 Microsoft 的相关帮助就可以明白,例如对D盘进行操作,则: 示例1:chkdsk /? 显示帮助信息. 示例2:chkdsk d: 检查D盘的磁盘状态,报告磁盘错误. 示例3:chkds ...
- 一 APPIUM基本理论知识
1.APPIUM介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用.所谓的“移动原生应用”是指那些用 iOS SDK 或者 A ...
- v4l2视频采集摄像头
v4l2 --是Linux内核中关于视频设备的内核驱动框架,为上层访问底层的视频设备提供了统一的接口./dev/vidioX 1.打开设备文件 fd=open("/dev/video3&qu ...
- 封装 INI 文件读写函数
delphi读写ini文件实例 //--两个过程,主要实现:窗体关闭的时候,文件保存界面信息:窗体创建的时候,程序读取文件文件保存的信息. //--首先要uses IniFiles(单元) //--窗 ...
- Linux CentOS 安装 httpd
1.查看并安装服务器是否安装编译器 make gcc gcc-c++ 查看:rpm -q gcc-c++ 2.查看SELinux 和 iptables 的状态 3.在根目录新建文件夹 lamp 4.使 ...
- flex blazeds地址
flex blazeds地址 BlazeDS地址:http://sourceforge.net/adobe/blazeds/wiki/Home/最新BlazeDS版本是2011年编译的4.0.1.21 ...
- javascript实现页面滚屏效果
当我们浏览网页的时候,时常会碰到可以滚动屏幕的炫酷网页,今天笔者对这一技术进行简单实现,效果不及读者理想中那般炫酷,主要针对滚屏的技术原理和思想进行分享和分析.本示例在页面右侧有五个数字标签,代表五个 ...
- 玩转spring boot——结合阿里云持续交付
前言 在互联网项目中,项目测试.部署往往需要花费大量时间.传统方式是在本地打包.测试完毕程序,然后通过ftp上传至服务器,再把测试的配置文件修改为生产环境的配置文件,最后重新运行服务.这一过程如果交给 ...
- iOS 图片压缩方法
iOS 图片压缩方法 两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size). 压缩图片质量 NSData *data = UIImageJPEGReprese ...