一起话单业务量下降问题的排查过程

标签: 业务 问题 | 发表时间:2015-03-21 18:20 | 作者:zhouzxi
出处:http://blog.csdn.net

      【文章摘要

       最近,某局点支持人员反映某模块重启之后话单业务量下降,希望研发人员帮助查找问题原因。

       本文对该问题原因的查找过程进行了详细的介绍,为相关软件问题的分析及解决提供了有益的参考。

 

        一、问题描述

       在某局点,有一个软件系统实现话单的生成功能。某天,该局点的现场支持人员发来邮件,反映现场某话单分拣模块重启之后生成的话单的量较之前有大幅度的降低。其邮件中表达的意思有这几个:

       (1) 现场人员只是将该模块重启了,并未修改任何配置。

       (2) 重启之后模块(图1中的话单分拣模块A)生成的每个话单文件的大小只有重启之前的几十分之一,下降得相当的厉害。

       (3) 在现场还部署了另一个相同的话单分拣模块(图1中的话单分拣模块B),也进行了重启操作,但其生成的话单的量并未下降。

 

        二、现场部署图

        收到邮件之后,我们迅速展开了对问题的排查。在排查问题之前,我们了解了现场各个模块的部署情况,如图1所示。

图1 现场部署图

 

        三、问题原因初步分析

       我们请现场支持人员返回了话单转换模块、话单分拣模块A和话单分拣模块B的日志及相关的话单文件。在寻找具体的原因之前,我们很纳闷的是话单分拣模块A和话单分拣模块B是完全一样的,为什么一个有问题而另一个没有问题?我们基本上排除了话单分拣模块A的程序有问题的可能性,转而寻找其它方面的原因。

       话单分拣模块A的程序处理的大致流程如图2所示。

图2 话单分拣模块A的程序处理流程

       从图2可以看出,话单分拣模块A要将从源文件目录中扫描到的文件中的记录进行一定的筛选,然后将满足条件的记录按照特定算法写入结果文件中。图1中的最终话单A即是结果文件。

       为了准确地定位问题原因,我们恢复了现场的环境,即采用与现场一样的程序版本、配置和数据库环境。我们根据现场返回的日志,选取了特定时段的源话单文件来运行,发现生成的最终话单与现场生成的最终话单是完全一样的。这进一步排除了程序有问题的可能性。

       那么,问题原因到底是什么呢?

 

        四、问题定位

        既然程序没有问题,那是不是源话单中满足分拣条件的记录本来就变少了呢?我们详细查看了配置文件,里面涉及到分拣条件的配置如下:

        FieldFilter=(11:4),(11:7),(11:8),(11:9),(11:10),(11:11)

        其意思是只有源话单的每条记录的第11个字段的值等于4,7,8,9,10,11时,该条记录才能够被挑出来生成结果话单,否则会被过滤掉。

        我们在重启之后的源话单文件中查询了一番,发现第11个字段的值等于4,7,8,9,10,11的记录确实很少。“巧妇难为无米之炊”,既然源头都少了,那么结果变少就不足为奇了。

       我们又在重启之前的源话单文件中查询了一番,发现第11个字段的值等于4,7,9,10,11的记录数与重启之后对应的记录数相当,但第11个字段的值等于8的记录数明显比重启之后该字段为8的记录数多很多。难道这就是话单业务量下降的原因?

       我们马上联系现场支持人员查看第11个字段的值等于8的记录的产生过程,发现确实是该过程异常导致源话单中满足筛选条件的话单记录减少,最终导致了整个话单业务量的下降。

       现场进行相应的操作之后,第11个字段的值等于8的记录又出现了,话单业务量也就逐渐达到了重启模块之前的水平。

 

        五、总结

        通过本次问题排查,我们总结出的经验有以下几个:

        (1) 系统出问题的地方并不限于最直观表现出现象的模块。当我们发现“认为有问题”的模块无问题时,应该着手排查其上游模块,直到查明问题的原因为止。

        (2) 软件是程序、文档和数据的集合。在排查问题的过程中,我们不光要查看程序代码,对于程序用到的配置文件等,也要细细查看。

        (3) 为了排查程序问题,我们要尽量掌握比较全面的信息(包括程序日志、数据库信息等),这样有利于复现问题,最终定位问题。

 

       吴军老师在《文明之光》一书中说:“办法总比问题多”。确实,只要我们善于总结,善于分析,那么任何程序问题都是可以解决的。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

作者:zhouzxi 发表于2015/3/21 10:45:54 原文链接
阅读:180 评论:0 查看评论

相关 [业务 问题] 推荐:

DevOps不是个技术问题,而是个业务问题

- Allen - 译言-电脑/网络/数码科技
来源DevOps is not a technology problem DevOps is a business problem. DevOps不是个技术问题,而是个业务问题. Since Patrick Debois called for the first DevOps Days event and unleashed the term "DevOps" upon the world, there is no denying that DevOps has evolved into a global movement..

一起话单业务量下降问题的排查过程

- - CSDN博客综合推荐文章
       最近,某局点支持人员反映某模块重启之后话单业务量下降,希望研发人员帮助查找问题原因.        本文对该问题原因的查找过程进行了详细的介绍,为相关软件问题的分析及解决提供了有益的参考.         一、问题描述.        在某局点,有一个软件系统实现话单的生成功能. 某天,该局点的现场支持人员发来邮件,反映现场某话单分拣模块重启之后生成的话单的量较之前有大幅度的降低.

稿费问题

- Ruixing F - 创造社新任社长宋石男
据说现在全中国靠给平媒自由撰稿为生的,超不过1000人,而且不少处于相当窘迫的境况,就算想买根绳子来上吊,都买不起质量好的,结果绳子老断. 作为自由撰稿人的一员,我对此深有体会. 1999年国家版权局出台的基本稿酬标准,每千字30元-100元,至今仍为全国发行的报刊的“行业指导价”. 业内估计,全国报刊的稿费中位数大约也就在100元.

lvs 问题

- - 操作系统 - ITeye博客
1: LVS连接的持久时间. 1)同一个ip发来请求到同一台RS的持久超时时间. ipvsadm -A -t 192.168.169.100:80 -s rr -p 120     #该客户的请求120秒内被分配给同一台web.  2)一个链接创建后空闲时的超时时间(分别是:tcp的空闲超时时间、lvs收到客户端tcp fin的超时时间、udp的超时时间).

跨机房问题

- Shengbin - NOSQL Notes
跨机房问题一直都是一个老大难的问题,先看传统数据库的跨机房方案. Master/Slave方案. 这是最常用的方案,适用于大多数需求. Master将操作日志实时地发送到Slave,Slave当成Master的一个Hot Backup. Master宕机时,服务切换到Slave,需要修改客户端逻辑使得Master失效时自动寻找新的Master.

Hash Collision DoS 问题

- mazhechao - 酷壳 - CoolShell.cn
最近,除了国内明文密码的安全事件,还有一个事是比较大的,那就是 Hash Collision DoS (Hash碰撞的拒绝式服务攻击),有恶意的人会通过这个安全弱点会让你的服务器运行巨慢无比. 这个安全弱点利用了各语言的Hash算法的“非随机性”可以制造出N多的value不一样,但是key一样数据,然后让你的Hash表成为一张单向链表,而导致你的整个网站或是程序的运行性能以级数下降(可以很轻松的让你的CPU升到100%).

相关性问题

- - 扯氮集--上海魏武挥的博客 - 扯氮集--上海魏武挥的博客
人的本性是趋利避害的,任何合作(或者交易,或者搭伙,或者配对,反正就不是一个人干的事)都会存在三个可能:有利、有害、无利无害. 对于合作一方来说,至少应该保持一个无害的结果,这是常识. 如果觉得有害的可能性很大,于是,我们就会拒绝合作. 问题在于,谁也不是神仙,没有人可以事先100%断定合作必然会有利或至少无害,于是人们需要很多背景信息来供决策.

select 效率问题

- - C++博客_杨粼波
 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解. 一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name='zhangsan'的,而后再根据限制条件条件tID>10000来提出查询结果.

IE11兼容问题

- - 研发管理 - ITeye博客
IE11下载地址:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=40901. 安装IE10和IE11之前需要先保证操作系统是Service版本的. win7 sp1升级包下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=5842.

Exception性能问题

- - 非技术 - ITeye博客
   1.从Exception往上介绍相关结构、代码.     class Exception里面没有什么新鲜东西,它继承自class Throwable,接下来我们看一下Throwable的结构,在它的构造函数中调用了fillInStackTrace这个函数. 接下来我们看看这个函数干了些什么.     fillInStackTrace函数的声明为.