• 
      
      

              
              
            • 含山有哪些赌场

              (ADMIN)

              2018-04-19

                  阿里妹导读:阿里巴巴的电商业务十分复杂,一方面是市场多样化,业务多样化,另外是消费者,商家的影响面非常广,任何一个小故障都可能引发一些社会问题,所以阿里对产品的质量,对服务的连续性有严格的要求。阿里技术人员在日常的研发运维过程中,积累了丰富的实战经验。今天,阿里妹将为大家分享一个关于故障,排查,分析和改进的真实案例。他山之石可以攻玉,希望对广大开发和运维工程师带来帮助。背景说明某日,做产品X的开发接到客户公司电话,说是对账出了1分钱的差错,无法处理。本着“客户第一”的宗旨,开发立马上线查看情况。查完发现,按照产品X当日的年化收益率,正常情况下用户在转入57元后一共收益3分钱,合计是57.03元。但是该客户当日却有一笔消费57.04元,导致客户公司系统对多出的1分钱处理不了。再进一步分析,发现用户收益结转时多了1分钱的收益,并且已消费……也就是说,本来用户只有3分钱收益,结果多发了1分钱给他,也就给公司造成1分钱的损失!用户在产品X里当天收益本应该是0.03元,怎么会变成0.04元呢?多出的1分钱收益从哪里来的呢?数据库记录分析带着上面的一系列疑问,开发人员首先排查了产品X收益的数据库记录。通过查询数据库发现,该用户收益结转在同一天内存在2笔交易记录。交易记录1创建时间为8:00:23,记录2创建时间为8:00:29,交易记录1和2的最后修改时间均为8:00:29,如图4-1所示。图4-1 用户当日收益结转数据库记录分析正常情况下产品X收益每天只会结转一次,而这个用户当日有两笔收益结转记录。开发人员怀疑,很可能是出现了并发问题。继续跟踪第一笔“TXID a”的记录,开发确认线上日志存在超时情况,失败原因是数据库链接数已满,线程等待提交。分布式锁超时时间是5s,第一笔记录从创建到修改提交经历了6s,由此可见是在分布式锁失效之后,获得了数据库链接,进行提交成功。有了以上三个排查思路后,我们可以开始逆推整个过程。过程逆推根据数据库记录逆推当时的运行情况,如图4-2所示。(1)由于数据库连接数被占满,流水1创建的事务处于等待提交状态。(2)系统A发现交易失败,重试次数不满8次的,立即发起重试,触发生成流水2的请求。(3)5s以内数据均被分布式锁拦截,无法提交。(4)经过5s后,系统B的分布式锁失效,此时事务仍在等待未提交。(5)6s时,流水2成功越过数据库查询幂等校验发起事务,此时流水1拿到数据库连接,流水1和2两个事务同时提交。(6)由于数据库未做唯一索引,且支付受理模块打穿下层幂等原则,生成2个TXID,导致两事务同时提交成功。(7)收益结转重复记账,用户多了一笔收入。图4-2 数据库分布式锁超时并发控制失效

              良多多的友情和亲情的收获 男女参加时更高吗这个问题 检查结果检查报告显示王鹏 人员再就业工作主体责任 霍元甲的徒弟大安而后慢慢