本文借用部门的小事改编的一博文。
1. 工单
客服很着急的带着一袋子投诉工单找到我们研发部门:
“你们怎么搞的,怎么这么退款不成功的?”
其他的业务部门也纷纷来电致贺:‘’你们系统是不是挂了!”
2. 懵逼
小编一下子就懵逼了,因为今天是小编值班,没有想到这么悲剧的事情发生了。小编的第一反应就是速度登录到后台,看看系统运行,没有问题。然后又迅速的电脑sgm监控系统,看看biz系统是不是稳定。
不上不知道,以上吓一跳,tp99都是3000以上,我大叫一声不好,迅速在群里问谁在操作系统运营的升级、打包之类的。这时候小黄弱弱的说这个,现在正在让dba执行一个删除操作,是昨天基金公司收益推错了,现在删掉,重新推送收益。但是为什么一个删除操作就会出现这么大问题那?拿着菜刀找DBA去!
3. BDA解释
DBA速度查看啦下监控,CPU间歇性打满。最终分析出来原来是分表分库操作中间件执行sql工具的问题。问题找到了,好吧,速度停掉,换种方式删除数据吧!
事情到这个时间的时候,应该是解决了,我舒舒服服的做到啦工位上。
4 事情远没有结束
这个时候工单开始躲起来了,尤其是退款的的工单和冻结、解冻的工单,大部分工单都是支付系统成功,台账系统成功,账务系统调账成功,为什么我们系统显示的是处理中那?上下游系统都成功了,为啥你一个中游系统在处理中。下面开始通过系统和日志分析问题。
5.分析
DBA执行数据库操作导致数据库的性能问题,这段时间的数据库的压力很大,一些插入和更新响应非常慢,导致平时不常见的并发更新问题,这个工单时消费退款的,具体体现为退款接口调用失败,原因是对应的原消费单状态是处理中,不是成功状态。在查询日志时发现了消费接口第一次调用时调账失败,异步重试的第二次调用是全部都处理成功,并且返回成功结果,订单此时不应该是处理中状态。
下图是第一次调用,因为调账失败(调账失败也是因为并发导致,这里不分析),在18:40:41.461开始更新订单状态为处理中。
下图是第二次调用,这次调账成功,在18:40:41.144开始更新订单状态为成功。
根据两次更新时间可以看出,由于数据库插入和更新非常慢,导致接口调用超时,调用方异步发起的mq重试操作到更新时,时间比第一次请求的更新早了500ms,导致其更新成了成功状态后,又被第一次更新改回了处理中状态。
6. 处理
针对这里更新并发问题,可以通过卡订单前置状态或乐观锁方式解决。本系统各类订单表都有version字段,需要各位在开发更新功能时,使用version字段实现乐观锁,如下图。
7. 改造
因为这个系统是我们半路接的系统,系统以前有些没有做完整的幂等性和并发性,下面我们要全面加上乐观锁,反之系统的请求的幂等性和数据的一致性出现错误。
8. 后记
坑是无处不在的,但是天网也是恢恢的,群众看钱的眼睛是雪亮的,所以针对钱的系统你不要存在侥幸心理蒙混过关,到时候发现了,你会很尴尬的。
相关推荐
分布式系统使这三个部分能够独立工作,增强了工业机器人的灵活性和自适应性,降低了系统故障的风险。 **二、工业机器人的设计考虑** 1. **结构设计**:工业机器人的设计通常包括感应、处理和驱动三大模块。它们...
PHP工单管理系统|在线提交工单管理系统基于THINKPHP二次开发免费开源 源码简介:PHP工单管理系统|在线提交工单...适用范围:工单管理系统源码|在线提交工单管理系统基于THINKPHP|完美使用源码 运行环境:php+mysql
【基于JAVA EE的工单管理系统】是一个典型的Web应用程序,它主要使用Java EE(Java Platform, Enterprise Edition)技术栈来开发,旨在实现对电信业务的高效管理。Java EE平台提供了丰富的服务和组件,使得开发者...
9. **数据库设计**:工单系统通常需要一个数据库来存储工单信息、用户信息、处理历史等数据,可能是关系型数据库如MySQL或非关系型数据库如MongoDB。 10. **安全性**:系统需要确保数据的安全,包括用户隐私保护和...
这个标题表明我们正在讨论一个基于Java编程语言构建的工单系统。工单系统通常用于处理用户请求、问题报告或服务申请,是许多企业和组织内部流程自动化的重要组成部分。它允许用户提交工单,然后由相应的支持团队进行...
此套工单管理系统,使用bootstrap+layer+jquery写成 页面有,登陆页 工单首页,首页含有工单的仪表盘,通告,动态等 工单管理,含工单增删改查等页面,重要的是工单的筛选,和搜索 工单处理页面,主要有工单的新建,...
分布式系统性能测试是一个专门针对分布式计算环境进行的测试活动,主要关注于验证和评估分布式系统在实际生产环境中的性能表现。 分布式系统的性能测试主要是模拟实际的业务负载,通过一系列的测试来衡量系统的响应...
工单管理系统主要功能模块包括员工管理、工地信息管理、工单中心管理等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为...
为解决这一问题,该公司决定对系统进行升级改造,以确保设备的稳定运行。在改造方案中,该厂决定更换主机电脑、升级中控SUPCON JX-300XP系统构架,包括操作站、通讯网络、控制站和控制柜,并优化自动控制。 在实施...
分布式系统是计算机科学中的一个重要领域,它涉及到多台计算机通过网络进行协同工作,共同完成一个任务。西北工业大学的这个实验内容旨在让学生深入理解和掌握分布式系统的原理与实践,通过实际操作来提升理论知识的...
PHP程序开发在线工单管理系统源码 安装环境要求: 服务器空间需要支持 php5.6-7.1 + mysql 1、源码包完整上传至空间,并解压 2、执行 http://域名/ install 根据提示完成安装 3、安装完成,其它的自己调整和设置 ...
无编程基础请勿购买本源码,本源码是...源码介绍:可自适应的独立工单管理系统,拥有完整的工单处理流程,具备提交工单、管理工单、跟进工单等功能。 服务器环境:linux+nginx或者linux+apahce,php7.2版本,mysql5.5+
这个系统通常包括用户界面,让员工或客户可以提交工单,以及一个管理后台,供管理员跟踪、处理和解决这些工单。在提供的描述中,我们得到了一个完整的工单管理系统源码,它已经进行了THINKPHP框架的二次开发,并且是...
实现在任何系统、任何页面,只需要调用一句Javascript代码,即可生成工单系统! PESCMS Ticket客服工单系统运行环境: PHP 5.6及以上版本 Mysql 5.5及以上版本 IE浏览器不保证兼容 PESCMS Ticket客服工单系统安装...
NORDACUNK现场分布式系统正是这一概念的体现,它允许在工厂或类似环境中部署多个分布式节点,实现标准化、快速安装和高效运维。这种分布式架构可以显著降低维护成本,提高系统的可扩展性和灵活性。 在传感器技术...
1. 创建拆解工单:在SAP系统中,需要创建一个新的拆解工单,输入相应的工单信息,包括工单编号、工单名称、创建日期等。 2. 输入工单组件:在创建拆解工单后,需要输入工单的组件信息,包括零部件编号、数量、单位...
本文将详细阐述一个典型的运维工单系统的工作流程以及页面介绍,这对运维人员尤其是一些初入行的小白来说非常有帮助。 ### 运维工单系统的工作流程 运维工单系统的流程通常包括以下四个步骤: 1. **创建工单**:...
分布式控制系统利用现场总线技术,将控制功能分散到多个节点,实现对工业燃煤锅炉的高效管理。 1. **概述** 节能与提高热能利用率是全球关注的焦点,而工业锅炉作为能源转换的主要设备,其能耗高、效率低和污染...