Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【线上问题系列】DB字段类型变更导致核心服务不可用

【线上问题系列】DB字段类型变更导致核心服务不可用

作者头像
千往
发布于 2019-10-29 06:40:11
发布于 2019-10-29 06:40:11
5630
举报

背景

业务说明

接到一个业务需求,往DB表中某个字段里新增一些数据,该字段本来是text类型,发现根据业务需求来说,新增数据超过text类型的最大长度,因此需要对数据库表的该字段类型做变更,变更为了MEDIUMTEXT类型来解决业务需求;

数据流转

DB表的数据会通过数据处理转化到mongo中存储,然后mongo再加载到redis中,打点服务会从redis读取该数据,进行json encode,然后做业务处理;

问题过程

  1. 开发反馈打点服务sg、fk集群机器出现响应时间突增以及请求出现大量5xx,运维增加集群机器数量后发现响应时间以及5xx数量并未减少,观察到新开的机器以及旧机器的打点服务进程的go携程数以及占用的内存非常高,开发开始排查具体原因
  2. 运维开始将fk地区请求转到vg地区集群,fk地区的请求响应时间以及5xx下降,服务恢复正常,vg地区表现正常(因为vg的机器多,即使解析慢了还是够应付)
  3. 开发反馈上午某业务需求服务上线新功能会导致mongo中的campaign中的问题字段数据量变大,可能是此变动影响到打点服务,进行回滚相应变动后,观察到sg地区请求5xx的数量逐渐下降,运维开始新开机器并重启旧机器,服务逐渐开始恢复
  4. sg地区服务恢复正常,fk地区请求也迁回fk集群机器,打点所有地区服务恢复正常

问题原因

  1. 运营反馈ss素材报表ctr出现100%的问题,排查到是上线素材区分国家后导致
  2. 开发操作上线修复此问题,同时会导致mongo中的campaign中的某问题字段数据量变大,由于打点通过zeus redis获取campaign数据,并且会进行json反序列化操作,部分单子的该问题字段数据量增大到2M以上,导致打点反序列化效率下降,造成请求堆积,最终导致进程中的携程增加,占用内存资源不断增加,导致服务不可用

问题总结/改进

  1. 信息同步,核心系统出现问题首先在群里反馈该问题,看之前是否有其他项目上线(包括DB/配置变更)导致该问题;
  2. 业务流程梳理,对全流程进行梳理,知悉数据去向和使用,方便问题的定位分析,快速发现问题;
  3. 系统架构优化,打点服务解耦,反序列化效率提升, mongo中campaign信息的拆分,了解到目前有部分信息是独立表的,打点服务在启动的时候会去load数据到内存中;
  4. 个人觉得架构问题是大于流程方面的,但复盘会下来流程问题大于架构,不可否认流程问题得到解决可以避免类问题,但随着业务持续增长/迭代这些问题始终是要暴露出来的;

其他

  1. 咨询了之前UC的同事那边的打点服务,打点服务可以拆分为接受+处理两个模块,接受模块来解析接受请求,然后存储在中间件中(类似kafka,metaQ消息队列),然后处理模块消费处理,这样可以解耦,如果处理失败的话,可以从中间件中重复消费减少损失
  2. 公司的算法强依赖日志,因为日志的确实会导致算法模型训练不准;
  3. 由于公司之前的节约成本的考虑,目前的mongo数据是刚刚够用状态,如果不从成本考虑,mongo机器够多,打点服务就可以马上加机器应对这次事故;临时加mongo机器很慢,因为加了机器还是同步数据,一般加mongo机器大概是1个小时左右,因此出现事故的时候一般不会加mongo机器时间花费太久了;但如果mongo机器只是够用的状态,只加打点服务的机器的话,mongo数据库会顶不住,太多服务连接使用,所以在加打点服务机器的时候出现了服务起不来,因为把mongo弄挂了;
  4. 打点服务的使用方是SDK,SDK发现打点服务返回不是200的时候有重试机制,所以导致打点服务请求暴增,因此引起雪崩了;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
“���”引发的线上事故
最近遇到了一起依赖升级 + 异常数据引发的线上事故,教训惨痛,本文对此进行回故和总结。
梦醒人间
2020/04/28
1.1K0
“���”引发的线上事故
后端线上服务监控与报警方案
一个功能上线后,其实研发心里根本没底儿,不知道这个功能上线以后是不是真的没问题;有经验一些老同学还知道直接登录线上机器去tail -f php.error.log,但是对于新同学来说,基本就只能等着被通知服务故障。
后端技术探索
2018/08/09
2.2K0
一次简单的Java服务性能优化,实现压测 QPS 翻倍
前段时间我们的服务遇到了性能瓶颈,由于前期需求太急没有注意这方面的优化,到了要还技术债的时候就非常痛苦了。
架构师修炼
2021/04/26
1K0
线上服务应急攻关方法论
每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。
用户1516716
2020/06/17
6360
线上服务应急攻关方法论
性能测试准备过程总结
性能测试准备过程总结 准备阶段 必要性分析 分析是否有必要进行性能测试; 被测对象分析 确认被测对象,并根据被测对象性质确认测试方案; 测试技术准备 根据被测对象准备测试技术不同协议测试工具、测试重点及方案是有区别的,例如http接口、rpc、websocket、udp测试技术不同,应根据不同的测试对象准备不同的测试方案 目标评估 评估被测服务性能指标预期结果 峰值QPS 已上线的需求可以按目前线上状态评估,这样最准未上线的需求一种方式可以找类似其它功能,没有相似功能的话可以找类似其它产品无法参照的话可按全
用户5521279
2019/10/24
9360
知乎已读服务的前生今世与未来
导读:对于很多大型网站来说,一些不起眼的小功能反而是实现的难点。对于知乎来说,已读服务会随着用户量和内容数量的增长而平方级增长,而且响应时间要求很短,因此是一个有实现难度的系统。本文作者介绍了知乎已读服务的架构设计和演进过程,并对很多技术取舍做了深入剖析,十分值得阅读。
业余草
2020/04/01
8530
知乎已读服务的前生今世与未来
CLS 监控告警:实时保障线上服务高可用性
对于任何一个线上服务来说,可用性都是一个重要的质量指标,用户能否用产品完成任务?效率如何?主观感受怎样?这实际上是从用户角度所看到的产品质量,是产品竞争力的核心,是产品可靠性、维修性和维修保障性的综合反映。
日志服务CLS小助手
2022/07/27
1K0
【韧性架构】让你的微服务容错的 5 种模式
在本文中,我将介绍微服务中的容错以及如何实现它。如果你在维基百科上查找它,你会发现以下定义:
架构师研究会
2022/06/08
1K0
【韧性架构】让你的微服务容错的 5 种模式
熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握
对于人类的身体健康来说,“三高”是个大忌,但在计算机界,系统的“三高”却是健康的终极目标。本文将介绍一下流量治理是如何维持这种“三高”系统的健康,保障数据流动的均衡与效率,就如同营养顾问在维持人类健康饮食中所起的作用一般。
腾讯云开发者
2023/12/27
2.5K0
熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握
开发更高可用、高质量的服务的一些建议
产品要求的功能都都开发完了,但这并不是终结。怎么样做才能让我们的服务具有更好的质量。 笔者结合自己的遇到的问题和工作中的经验,并以提问的方式,给读者一点点建议
sunsky
2020/08/20
6870
微服务网关演进之路
尽管很早我们就做了会员、商品、交易的服务化,但流量入口还是php主站,php实际上仍是一个单体应用,单体应用无需网关。当全站java化之后,单体应用将被拆分为微服务,自然需要一个网关来负责统一流量入口、鉴权、安全防护、业务统一处理等。
龟仙老人
2020/12/15
8810
线上故障处理手册
通常处理线上问题的三板斧是 重启-回滚-扩容,能够快速有效的解决问题,但是根据我多年的线上经验,这三个操作略微有些简单粗暴,解决问题的概率也非常随机,并不总是有效。这边总结下通常我处理应用中遇到的故障的解决方案。
方丈的寺院
2020/06/03
1.2K0
干货 | 携程持久化KV存储实践
过去几年,携程技术保障部门在Redis治理方面做了很多工作,解决了运营上的问题,在私有云上也积累了丰富的经验。后又通过引入Kvrocks,在公有云上实现降本增效的目的,从而支撑了公司的国际化战略。
携程技术
2021/07/22
1.1K0
【云+社区年度征文】TeamLeader如何Owner老系统?
做互联网的童鞋们一定都有过这样的经历,看过很多架构书,看过很多架构师成长指南,看过很多优秀的案例分享以及讲座。所以当我们刚毕业的时候,对于大厂的认知一定都是这样的。
小诚信驿站
2020/12/15
1.1K0
【云+社区年度征文】TeamLeader如何Owner老系统?
架构设计:线上服务故障应急机制讨论
最近由于疏忽误操作导致一次大故障,在此结合网上和实践经验,总结一下线上服务故障应急机制,警惕自己时刻注意服务稳定性问题。
黄规速
2022/09/27
9520
架构设计:线上服务故障应急机制讨论
TiDB 在平安核心系统的引入及应用
所以在我们引入前从以下六个方面分别对 TiDB 进行测试验证,其中功能与架构、配置与管理、备份与恢复都是针对我们运维管理,SQL 特性、基准测试、应用场景测试则是应对业务需求和业务场景的。
PingCAP
2019/05/29
8860
微服务架构组件分析
服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。
Java高级架构
2018/11/08
6870
高并发与高可用实战
DNS域名解析 整个过程大体描述如下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:1、浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。
老马的编程之旅
2022/06/22
1.5K0
高可用的常用策略
像网关、应用服务器这类无状态的,多副本比较好做,但像数据库、缓存这类有状态的,多副本时就必然涉及到数据同步的问题。
dys
2019/07/31
8540
CDN系列学习文章(五)——预热篇
本文介绍CDN的内容管理中预热功能,主要从业务需求,业务逻辑以及常见问题三方面了解CDN预热功能。
开元
2019/06/16
3.1K0
CDN系列学习文章(五)——预热篇
相关推荐
“���”引发的线上事故
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档