每年双11各技术团队都会进行一场大促准备,今年小微融资团队是第一次正式参与双11,小微融资服务于经营者,主要产品有网商贷,大数贷,平台贷,订单贷款,车秒贷,汽车租赁融资,存货贷,预付贷和保理融资等,本文是对小微融资双11保障过程的一个总结。
大促准备
整个双11保障准备的事情非常多,具体事情如下
目标
主链路分析
系分设计
项目计划
全链路压测
扩容
提前预案
紧急预案
限流配置
值班手册
监控大盘
最后准备
双11当天
双11复盘
目标
梳理每个产品的业务目标和技术目标,业务目标有下单数,用户数和支用数等。技术目标有稳定性和资源成本。
主链路分析
先进行大促主链路分析:
全链路物理链路梳理,包括应用的机器部署在哪里,依赖的数据库在哪个机房,每个机房的流量分配是多少,评估下链路上的应用是否需要扩容。
全链路依赖服务流量评估,链路上的每个应用每个接口需要承受的峰值QPS或TPS是多少。初步的评估标准是平时流量峰值的10倍,去年双11的两倍。
去年双11问题梳理。
分析出主链路中需要改造的点,改造点如下
减少依赖,部分服务直接依赖缓存,而不是系统或OTS。
同步改异步,对于性能要求高的接口,又不需要及时得到相应,我们改成了同步受理,然后异步处理。
日志异步化,避免物理机IO高影响应用。
限流配置,主链路中用到的接口都要配置限流。
降级开关,增加一些降级开关,比如消息量太大时,非核心消息直接抛弃。
降级配置,消息量大或应用处理不过来时,动态调整MetaQ客户端线程数。
消息拆分队列,分成VIP和非VIP队列,配置不同的限流策略,保证VIP队列消息优先处理。
改造计划
根据上述主链路分析出来的问题,编写系分设计文档,并排期改造,改造完之后进行压测,验证改造结果。
全链路压测
压测是检验全链路稳定性的重要手段。因为无论前面准备多么细致,压测总能发现问题,我们一共经历了5轮以上的压测,在压测过程中发现以下问题:
第一次压测就发现有些链路不在之间梳理的链路里。
第二次压测,压到峰值时发现某系统CPU,LOAD高,FULL GC和消息处理不过来等问题。
压测的时候发现部分请求响应延时1秒。
发现某些系统限流不生效
大盘只有分钟级监控没有秒级监控,换算麻烦。
压测需要注意以下几点:
优先在线上压测,压测时需要通知链路上系统OWNER。
压测前需要配置限流,压测流量逐渐摸高触发限流,检查限流是否生效。触发限流时,可以打开限流提高流量压测。
区分读流量压测和写流量压测。读流量逐渐摸高,对线上影响不大,一旦有问题停止压测。写流量对线上会有影响,需要写影子表,即压测流量写到单独的表和线上数据隔离。
每次变更后会再次进行压测,确保变更无问题。
压测过程中需要关注的指标如下:
系统指标,如应用错误数,业务流程是否正常。
机器性能指标,如IO,CPU利用率,LOAD,TCP重发率,流入流出带宽流量(一般机器是千兆网卡),GC等,不同机器的流量是否均衡。日志是否打的太快,导致磁盘飙高。
检查下线程池的容量,活跃线程是否已经达到最大线程,阻塞队列是否已满。应用的线程池很多,比如NOTIFY客户端(包括消息接收和消息处理线程池),METAQ客户端,ANTQ客户端线程池,TR线程池和异步命令框架线程池。
消息是否有挤压,有挤压多长时间可以处理完。是否会影响正常业务,如果影响就直接抛弃掉。
检查限流是否正常。
DUMP内存和线程堆栈,帮助你做进一步分析。
扩容
链路梳理时,梳理的是集群流量,扩容时要考虑单机承担的QPS,比如集群承担的QPS是20W,单机最多能承受2000QPS,所以一共需要100台机器。扩容需要注意点如下:
因为限流配置是针对单机的,扩容之后需要重新配置限流。
每个机房的机器数要均衡,高稳定性系统单机房能承担所有流量。
机器是否有状态,比如机器需要在白名单里才能访问某个IP,CPU是不是全是独享的,或是共享。
适当的冗余机器,部分机器可能会宕机。
提前预案
提前预案是指在双11之前执行的预案。需要记录并录入到预案平台,记录是为了回滚,放到预案平台是为了方便执行。预案有如下这些:
服务降级
主链路依赖服务的限流配置
关闭大数据同步任务,关闭把大量数据同步到DB,降低数据库压力。
关闭部分业务入口,比如签约,支用等。
关闭变更入口,如动态模块发布。
紧急预案
紧急预案是指在双11当天执行的预案。紧急预案必须录入到预案平台,配置执行的参数,这样双11当天可以一键执行紧急预案。紧急预案需要进行预案演练,如果有些预案无法演练,可以尝试推送一个其他值。
无论是提前预案还是紧急预案在执行的时候都会找另外一个同学一起check下,确保执行正确。我们也曾经出现过预案执行错的case。
监控大盘
监控大盘主要从两个维度进行配置,一个是业务流量监控,一个是系统问题监控。
业务流量监控,监控业务流量的波动,通过业务流量的波动可以发现系统问题,我们监控的业务数据有授信波动,付款消息总量,准入服务访问量和成功量,下单量和首付量等。
系统问题监控,主要监控应用错误数,CPU,内存,是否触发限流等指标。
大流量可以配置秒级监控。
最后的准备
大促前一天需要确保以下几件事情:
确认下数据库权限是否申请好
确认下服务器权限是否申请好,老微贷系统请OWNER申请admin权限。
确保监控系统访问权限
检查了每个服务器指标是否正常,IO,内存,CPU,GC,带宽,硬盘(日志)和数据库指标。双11当天某台机器出问题,直接找PE下线掉这台机器。
提前预案是否都已经执行完成。
业务方检查下后台使用权限
紧急预案是否都录入了应急平台
主链路系统进行重启。
-
大促执行手册,准备一篇文档,双11当天如何查问题和数据。
双11当天
双11当天需要做的事情
看监控大盘,是否有问题。
看服务器性能指标,是否不正常。
执行紧急预案
紧急预案执行和变更,请先群里同步一下。
非问题排查统计不要使用pgm,而是使用单机捞取。
最后对小微融资感兴趣的同学欢迎给我投简历 [email protected],注明来自并发编程网。
(全文完)
点击下方阅读原文