2016年刚过,2017年已经到来,大家采用了不同的方式来跨年。对于一个运维人员来说,每逢节假日以及这样特殊的日子都是神经异常紧张的时刻,通常来说系统此时是最容易出现问题的,譬如今年元旦1号就有闰秒的问题,处理不当会导致系统出现异常情况。另外,像双十一、春节抢车票这样的特殊时刻,短时间内数以千万计的用户访问系统,交易量是平时的几倍甚至数十倍,对系统稳定性是极大的考验,运维工程师在精心准备之余只能祈求上天保佑了,所以才会出现上面题图中工程师们赤膊拜机器的搞笑场景。
从IT运维角度来看,这种特殊的日子通常有如下几类:
1、突发类
突发类也有两类,一种是有计划突发,譬如促销活动,双十一,过年抢红包;另外一种是突然的,无计划无准备的,譬如发生了突发事件,网站遭遇黑客攻击等等。
对于有计划突发,运维可以提前做准备、做预案、做演练,心理相对有预期,当然事件真正发生时也可能会遭遇异常状况,是之前没有考虑到的。 对于无计划、无准备的随机突发事件,会让人措手不及,通常破坏性更大,需要我们在平时要尽可能的假想一些异常,并且做好应急演练。
随机突发事件
1、突发事件
譬如,遭遇自然灾害物理环境被损坏,偶发热点事件导致站点被大量登陆;
2、网站遭遇黑客攻击
譬如,遭遇黑客DDOS攻击,网络病毒爆发。
有计划事件
1、过年抢红包;
2、双十一抢购
3、网站促销打折活动
2、业务类
另外一类是和业务逻辑密切相关的,譬如月底财务系统要进行结算给大家发工资,运营商BOSS系统月底集中进行扣费,对欠费的用户进行停机。这些业务规则引发的业务并发量大,通常是系统后台进程在处理,短时间高并发,对系统压力较大,并且未能及时处理还会影响到用户正常业务使用。
业务类
1、月底财务系统结算
2、用户月底集中扣费或者业务规则生效,譬如运营商套餐次月生效
3、信用卡集中出账单,用户集中还款。
对引发业务量暴增事件的应对策略大概有下面几种
策略1:尽量避免
能避免尽量避免,市场营销活动、业务规则制定的时候,业务部门提前和IT部门沟通,尽可能的减少这种业务集中处理的情况。譬如月底集中出账期间,就尽量不要进行促销活动,避免雪上加霜;信用卡还款日进行拆分,避免统一集中在某一日。
策略2:技术优化
业务部门通常是老大,IT部门属于支撑部门,往往扛不住业务部门的要求,特别是高层领导安排的工作,这个时候IT部门只能硬扛,提前做好准备。从技术角度来进行优化保障,常用的手段有:
1、限流:系统顶不住,就控制进入的交易数,类似节假日高速公路免费开放时,流量过大采用收费站限流的措施。
2、隔离:如果某个子系统挂了,能够进行屏蔽,不影响主要功能。譬如,电商网站的推荐系统,如果在高并发的情况下支撑不住,直接在页面展示上进行屏蔽,对用户购物影响并不大。
3、降级:有多大能力办多大事,当系统压力过大时,保留核心业务,其他非核心功能,依次进行降级,譬如,后台管理功能,大数据分析功能这些非实时关键功能在紧急时刻直接下线,不准使用。
4、扩容:借助云计算环境,压力过大的情况下,紧急从资源池中抽调资源进行支援,这个需要系统总体架构支持弹性伸缩。
5、流程优化:在大型活动之前,通过预先引导用户升级客户端,将活动的一些预设逻辑、展现的图片、视频等信息预先做到客户端中,避免活动期间频繁的到服务器取图片等数据,节约系统性能和带宽消耗。
策略3:充分演练
对突发和异常情况,提前进行演练,特别是进行压力测试,通常提前利用夜间业务低峰时段对生产系统进行压力测试和演练,寻找性能薄弱点,逐个进行优化。
另外,对活动当日的保障流程和管理也需要细化,成立各相关单位联合保障组,集中到一起办公,提前动员,让各相关单位做好“战斗”准备。经过充分的准备才能在突发情况下有章可循,遇事不慌。
作为一个运维人,平时7x24x365时刻准备着,无论刮风下雨、无论白天黑夜有问题需要第一时间远程或者到现场处理,特别是节假日,很多人不能和家人、朋友待在一起,需要现场值守,他们没有鲜花、掌声,默默的支撑着系统的运行,让我们双十一能够开心的买买买、春节能够顺利的抢到火车票、电话能够随时畅通、能够开心的抢红包,平凡的他们做着不平凡的事情。