大促保障如何做,有哪些工作项,看这里。
工作项 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
应用容量评估,测算PV、UV、一天内调用次数、峰值调用量 | 所有 | |||||||||||||||||
数据容量评估,测算数据库、REDIS等存储容量,记录数、磁盘占用量 | 所有 | |||||||||||||||||
线下PRE环境性能压测(详细工作计划) | ||||||||||||||||||
线上购物链压测 | ||||||||||||||||||
DB TOP SQL慢查询巡检及优化 | 所有 | |||||||||||||||||
DB数据库IO调度算法巡检(DeadLine配置) | 所有 | |||||||||||||||||
DB SQL超时设置 | 所有 | |||||||||||||||||
REDIS分片巡检及优化(<32G) | 所有 | |||||||||||||||||
ESB 巡检(连接数8000限制、400W数据积压限制、TPS4000限制、高可用配置) | 所有 | |||||||||||||||||
RSF 版本巡检(2.1.2) | 所有 | |||||||||||||||||
故障场景重点关注项 | 所有 | |||||||||||||||||
高可用(一主多从、冷备)、其他事项巡检 | 所有 | |||||||||||||||||
RSF超时、限流、SLA、告警设置 | 所有 | |||||||||||||||||
ESB超时、限流、SLA、告警设置 | 所有 | |||||||||||||||||
容错设计检查 | 所有 | |||||||||||||||||
降级限流设计检查 | 所有 | |||||||||||||||||
全流程核心链路过载演练 | ||||||||||||||||||
系统监控、告警、人员设置检查 | 所有 | |||||||||||||||||
宕机应急演练 | ||||||||||||||||||
创单功能生产压测 | ||||||||||||||||||
DB\REDIS主备切换演练 | ||||||||||||||||||
ZK故障演练 | ||||||||||||||||||
应急预案 | 所有 | |||||||||||||||||
零点峰值应对 | 所有 | |||||||||||||||||
扩容交付进度 | ||||||||||||||||||
压测不达标程序优化计划 | ||||||||||||||||||
MQ迁移 | ||||||||||||||||||
主备切换演练 | ||||||||||||||||||
网络参数、交换机高可用巡检 | 所有 |
双11大促准备工作清单 | |||||||
分类 | 工作项 | 交付物 | 计划开始时间 | 计划完成时间 | 负责人 | 完成结果 | 备注 |
容量和性能评估 | |||||||
1 | 应用容量评估,测算PV、UV、一天内调用次数、峰值调用量 | 评估报告 | 各系统技术经理 | 完成 | |||
2 | 数据容量评估,测算数据库、REDIS等存储容量,记录数、磁盘占用量 | 2016/10/13 | 2016/10/15 | 各系统技术经理 | 完成 | ||
系统性能压测达标 | |||||||
1 | 线下PRE环境性能压测(详细工作计划) | 压测报告 | 2016/10/13 | 2016/10/30 | 各系统技术经理 | 进行中 | |
2 | 线上购物链压测 | 2016/10/20 | 2016/10/30 | 技术经理 | 完成 | ||
3 | 创单功能生产压测 | 演练报告 | 2016/10/13 | 2016/10/25 | 完成 | ||
4 | 全流程核心链路 | 演练报告 | 2016/10/17 | 2016/10/25 | 各系统技术经理 | 进行中 | |
巡检自检 | |||||||
1 | DB TOP SQL慢查询巡检及优化 | 巡检自检清单 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
2 | DB数据库IO调度算法巡检(DeadLine配置) | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
3 | DB SQL超时设置 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
4 | REDIS分片巡检及优化(<32G) | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
5 | ESB 巡检(连接数8000限制、400W数据积压限制、TPS4000限制、高可用配置) | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
6 | RSF 版本巡检(2.1.2) | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
7 | 网络参数、交换机高可用巡检 | 2016/10/15 | 2016/10/17 | 各系统技术经理 | 完成 | ||
8 | 故障场景重点关注项 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
9 | 高可用(一主多从、冷备)、其他事项巡检 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
核心链路与服务SLA | |||||||
1 | RSF超时、限流、SLA、告警设置 | 服务治理与调用链路 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
2 | ESB超时、限流、SLA、告警设置 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
3 | 容错设计 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
4 | 降级限流设计 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | ||
系统监控与应急演练 | |||||||
1 | 系统监控、告警、人员设置检查 | 系统监控与应急处置手册 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
2 | 宕机应急演练 | 演练报告 | 2016/10/13 | 2016/10/25 | 完成 | ||
3 | DB\REDIS主备切换演练 | 演练报告 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
4 | ZK故障演练 | 演练报告 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
5 | 主备切换演练 | 应急预案 | 2016/10/13 | 2016/10/25 | 进行中 | ||
6 | 应急预案 | 应急预案 | 2016/10/13 | 2016/10/15 | 各系统技术经理 | 完成 | |
7 | 零点峰值应对 | 应急预案 | 2016/10/13 | 2016/10/15 | 各系统技术经理 | 完成 | |
扩容或优化准备清单 | |||||||
1 | 扩容交付进度 | 情况说明 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 完成 | |
2 | 压测不达标程序优化计划 | 计划安排 | 2016/10/13 | 2016/10/25 | 各系统技术经理 | 进行中 | |
3 |
巡检清单 | |||||||
序号 | 分类 | 巡检内容 | 处理方案 | ||||
事前处置 | 监控告警 | 应急处置 | |||||
防控手段 | 监控点 | 影响范围 | 应急手段 | 恢复时长 | |||
一、系统应用程序 | 参数优化、安全巩固、扩容、高可用 | CPU、IO、TPS、QPS、单据量、健康检测 | 降级、分流、限流 | ||||
1 | 系统参数配置 | 应用服务器配置:数据库连接池设置,连接数、事务隔离级别,连接超时等 | 检查 | 连接数监控 | 整个应用 | 前端限流 | 1分钟 |
2 | 系统参数配置 | 应用服务器配置:线程池设置,工作线程、IO线程数设置,超时等 | 检查 | 线程队列监控 | 整个应用 | 前端限流,增大队列长度 | 1分钟 |
3 | 系统参数配置 | ESB配置:是否配置预警阀值、新老平台复用的接口URL配置是否一致 | 检查 | ||||
4 | 系统参数配置 | UTS配置:检查PRE与PRD环境是否配置一致 | 检查 | ||||
5 | 系统参数配置 | SCM配置:检查PRE与PRD环境是否配置一致 | 检查 | ||||
6 | 业务参数配置 | 业务配置数据:检查PRE与PRD环境是否配置一致 | 检查 | ||||
7 | 业务参数配置 | 功能菜单是否可关闭、降级功能开关是否可用 | 检查 | ||||
8 | 业务参数配置 | 业务运行过程中需要的必要主数据、元数据是否正确设置 | 检查 | ||||
9 | 定时任务配置 | 23:50-00:10之间禁止启动定时任务,23:50之前启动的定时任务需要在23:55前运行完成。 | 检查 | ||||
10 | 定时任务配置 | 所有定时任务,尽量避免在整点触发,选择一个随机的非整点时间来触发启动 | 检查 | ||||
11 | RPC、REST接口异常 | 响应超时 | 优化程序,扩容 | 健康检查,接口监控 | 关联系统 | 业务降级,前端限流 | 2分钟 |
12 | RPC、REST接口异常 | 无响应 | 优化程序,扩容 | 健康检查,接口监控 | 关联系统 | 业务降级,前端限流 | 2分钟 |
13 | RPC、REST接口异常 | QPS、TPS超出预估峰值 | 扩容、高可用 | 接口监控 | 关联系统 | 业务降级,前端限流 | 2分钟 |
14 | RPC、REST接口异常 | 成功率异常下降 | 接口监控 | 关联系统 | 前端限流、负载均衡 | 2分钟 | |
15 | 系统应用异常 | 不能正常运行 | 高可用 | 健康检查 | 关联系统 | 负载均衡 | 1秒 |
16 | 系统应用异常 | 进程异常、假死 | 高可用 | 健康检查 | 关联系统 | 负载均衡 | 1秒 |
17 | 系统应用异常 | 线程阻塞 | 高可用 | 健康检查、线程监控 | 关联系统 | 负载均衡 | 1秒 |
18 | 系统应用异常 | 无法启动 | 高可用 | 健康检查 | 关联系统 | 负载均衡 | 1秒 |
19 | 系统应用异常 | 响应缓慢或无响应 | 高可用 | 健康检查、超时检查 | 关联系统 | 前端限流、业务降级、负载均衡 | 1秒 |
20 | 交易异常 | 流量异常下降 | 健康检查、流量监控 | 关联系统 | |||
21 | 交易异常 | 成功率异常下降 | 健康检查、接口监控 | 整个应用 | |||
22 | 交易异常 | 大量繁忙,交易时间延长 | 高可用 | 健康检查、接口监控 | 整个应用 | 前端限流、业务降级、负载均衡 | 5秒 |
23 | 交易异常 | 交易异常报错 | 高可用 | 健康检查、接口监控 | 整个应用 | 负载均衡 | |
24 | 其他异常 | 应用服务队列堵塞 | 高可用 | 健康检查、接口监控 | 整个应用 | 前端限流、负载均衡 | 5秒 |
二、数据库 | 参数优化、安全巩固、扩容、高可用 | CPU、IO、MEM、TPS、QPS、健康检测 | 限流、主备切换 | ||||
25 | 物理损坏 | 数据库崩溃 | 高可用 | 健康检查 | 关联系统 | 主备切换 | 5分钟 |
26 | 物理损坏 | 数据库存储损坏 | 高可用、热备 | 磁盘、IO监控 | 关联系统 | 主备切换 | 5分钟 |
27 | 物理损坏 | 逻辑日志满导致数据库挂起 | 高可用 | 磁盘、IO监控 | 关联系统 | 主备切换 | 5分钟 |
28 | 操作异常 | 数据库无法正常处理请求 | 高可用 | 健康检测 | 关联系统 | 前端限流、主备切换 | 5分钟 |
29 | 操作异常 | 数据库表死锁 | 死锁监控 | 整个应用 | 快速杀死进程 | 3分钟 | |
30 | 操作异常 | 数据库表数据无法插入 | 存储容量检查 | 错误日志监控 | 整个应用 | 读写分离,主备切换 | 5分钟 |
31 | 操作异常 | 数据库交易处理缓慢 | 慢SQL检查 | 慢SQL监控 | 整个应用 | 前端限流 | |
32 | 操作异常 | 数据库无法连接或无响应、假死 | 健康检测 | 关联系统 | 主备切换 | 5分钟 | |
33 | 操作异常 | 数据库性能极剧下降 | 连接数监控、IO监控 | 关联系统 | 前端限流 | 3分钟 | |
34 | 操作异常 | 数据库实例出现大量等待事件 | 连接数监控、IO队列监控 | 关联系统 | 前端限流 | 3分钟 | |
35 | 其他异常 | 数据库短时间不可用 | 健康检测 | 关联系统 | 前端限流、主备切换 | 3分钟 | |
36 | 其他异常 | 主从同步延迟 | 检查 | 延迟监控 | 持续观察 | ||
37 | 其他异常 | 数据库实例监听宕掉 | 检查 | 健康检查 | 主备切换 | 5分钟 | |
三、中间件 | 参数优化、安全巩固、扩容、高可用 | CPU、IO、MEM、TPS、QPS、健康检测 | 主备切换 | ||||
38 | ESB中间件 | 实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 切换 | 5分钟 |
39 | RSF中间件 | 实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 客户端负载均衡 | 1分钟 |
40 | REDIS中间件 | 实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 自动重新选主 | 1分钟 |
41 | REDIS中间件 | 主从同步延迟 | 参数检查,高可用 | 延迟监控 | 关联系统 | ||
42 | 消息中间件 | 实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 切换 | 5分钟 |
43 | 消息中间件 | 消息堆积 | 参数检查,高可用 | 消息堆积长度(>2000,结合RT、QPS) | 关联系统 | 前端限流 | |
44 | WAS中间件 | 实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 前端负载均衡 | |
45 | 负载均衡中间件 | NGINX实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 主备切换 | 2分钟 |
46 | 负载均衡中间件 | IHS实例异常或僵死 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 主备切换 | 2分钟 |
47 | 文件图片服务器 | 存储失败 | 参数检查,高可用 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 切换 | 5分钟 |
48 | 其他依赖中间件 | WAF拦截失败 | 参数检查,高可用、TOP 50 IP梳理 | 健康检查、内存(>80%)、IO、CPU(>80%) | 关联系统 | 切换 | |
四、操作系统 | 参数优化、安全巩固、升级 | LOAD、IOWAIT | 切换 | ||||
49 | 异常或报错 | 负载过高 | 检查 | 负载监控 | 整个应用 | 前端限流 | 1分钟 |
50 | 异常或报错 | 无响应 | 检查 | 健康检查 | 整个应用 | 前端容错 | 1分钟 |
51 | 异常或报错 | 文件数超出 | 检查 | 系统日志监控 | 整个应用 | 前端限流 | 1分钟 |
52 | 异常或报错 | TIME_WAIT连接占用严重 | 检查 | 网络日志监控 | 整个应用 | 前端限流 | 1分钟 |
53 | 异常或报错 | 交换区频繁换入换出 | 检查 | 磁盘、IO监控 | 整个应用 | 前端限流 | 1分钟 |
五、硬件及网络 | 备份 | 存活检测 | 切换 | ||||
54 | 网络异常 | 网络异常中断 | 网络监控 | 整个应用 | 切换 | ||
55 | 网络异常 | AP与DB间网络异常或不可用 | 网络监控 | 整个应用 | 切换 | ||
56 | 网络异常 | 网络端口流量异常升高/下降 | 网络监控 | 整个应用 | 切换 | ||
57 | 网络异常 | IP地址异常或出现冲突 | 网络监控 | 整个应用 | 切换 | ||
58 | 网络异常 | 数据传输中出现异常丢包 | 网络监控 | 整个应用 | 切换 | ||
59 | 硬件异常 | F5服务异常或报错 | 网络监控 | 整个应用 | 切换 | ||
60 | 硬件异常 | 异常掉电 | 主机监控 | 整个应用 | 切换 | ||
61 | 硬件异常 | 磁盘存储损坏 | 磁盘、IO监控 | 整个应用 | 切换 |
1.某些没有经过充分压测的接口 流量过大,拖死整个系统。 需要针对每个接口根据接口tps能力设置好流控值。 |
2.请求的数据穿透了缓存,如爬虫爬了冷数据等,拖死数据库。流控+监控应急封ip或封接口。 |
3.因为外部服务响应慢,导致线程池被卡满。需要做好超时设置,支持熔断。 |
4.物理机故障,如宕机或响应慢。需要做好高可用,紧密监控、及时切换。 |
5.某个redis或数据库分片出现故障,导致全局卡死。需要超时设置、对redis或数据库分片需要支持熔断能力。 |
6.依赖的外部服务故障,同时系统对外部非重要服务耦合过于紧,无法降级。 |
7.缓存没有及时生效 或 数据传输出现延时。系统需要评估需要处理的数据量 及时长,确保数据能及时处理完成。 |
8.资源争抢,特别是io资源争用。 各重要系统请检查 现有系统的io利用率和iops指标,如存在瓶颈,需要进行迁移或切ssd。 |
9.数据库坏页,核心链路系统需要做到一主两从,出现疑似数据库坏页,尽快切换。 |
10.ddos或cc攻击, 安全团队需要做应对攻击的应急预案,并加强演练,加快恢复速度。 |
11.网络故障、网络延时、基础服务故障。网络和基础服务 必须保证 高可用和良好性能。 |
12.定时任务 停止服务 或 调度延迟,未能及时监控出来。加强对每个定时任务的监控和报警。 |
服务要有容错设计,为失败设计,服务主要异常场景: |
(1)服务内部出错、异常; |
(2)服务处理延迟; |
(3)服务处理过载; |
(4)网络链路延迟或中断; |
(5)服务依赖链中部分依赖SLA不达标,造成整体服务不可用; |
(6)服务链条过长,造成SLA整体不可控; |
解决的思路:隔离(物理或逻辑)、自我保护、失效转移或恢复、降级; |
1、隔离手段:依据服务重要性分级或流量特点、用户画像等,从物理上隔离服 务。主要使用分流技术;将服务使用的资源(CPU、线程、IO等)隔离,主要使用舱壁模式; |
2、自我保护手段:快速失败(failfast)、流控、超时、熔断; |
3、失效转移或恢复手段:失效检测、重试、转移(failover)、回退恢复(failback); |
4、降级手段:依据依赖服务的重要性或依赖程度(强、弱),同步变异步,降级开关、拒绝部分服务等; |
降级方案、限流方案设计说明: |
1. 每个系统需要分析调用量前10的服务(URL、ESB、RSF服务),并综合考虑其响应时间和耗时。原则上所有调用量大且降级后对销售或作业不造成较大影响的服务,都需要考虑。 |
2. 降级、限流的目的是保护系统,减少本系统的压力、或降低对后端系统的压力、或降低对网络的压力。 |
3. 限流方案不能造成正常销售或作业执行工作,降级后不能对销售造成较大的影响,对销售的较小影响是可以接受的。先限流,再降级。 |
4. 需要有成熟可靠的降级、限流预案。 |
5. 降级手段有:功能禁用、增加功能的缓存时间、使用本地缓存而不是调用外部服务、减少某些业务特性以降低业务复杂度、不调用后端依赖服务、异常时采用默认数据或兜底数据,同步变异步调用,减少JOB执行频率或变更业务峰值JOB触发调用时间等; |
6. 限流手段有:随机拒绝请求、拒绝低优先级系统调用,拒绝低级别用户调用,根据白名单或黑名单规则拒绝特定用户请求调用,对失败率高或响应超时系统调用拒绝调用,利用线程池队列排队处理调用,拒绝超出处理能力调用等。 |
7. OLAP应用,如对OLTP系统的物理机器或网络资源造成了争用,同样需要设计降级方案。 |
超时设置方法: 1、核心链路方法,通过压测获取响应时间TP99/TP90。作业线方法通过拉取RSF\ESB报表获取响应时间TP99/TP90. 2、要清楚响应时间的增加,不仅消耗资源(例如线程池、CPU、IO等),也会使TPS下降。严重时会耗尽连接,发生级联现象,使相关系统受到影响。TPS=C/RT. 3、响应时间的增加,会使失败率增加,异常会增加。如事务类接口在非幂等性设计情况下,造成重复生成数据。 4、原则上,作业线方法,可以通过查看TP99数据,设置2*TP99-5*T99。高并发核心链路接口,要不大于2*TP99.非核心作业方法,可以统一设置为3秒,原则上不应大于5秒。 5、响应时间在2-5倍TP99之间的选择,应结合是否事务方法、是否幂等,并发量,以及对业务的影响进行评估。并发量小的,事务方法,对业务影响大的,响应时间可设置大些;并发量大的,对业务影响小的,响应时间可设置小些。其他的,可以统一设置为3*TP99. 6、报表类、JOB类方法,根据事务执行时间进行单独设置。 |
RSF\ESB限流设置。两者都是基于限制并发数来限制调用次数,从而达到限流目的。 1、根据压测或历史得知,你的总并发数; 2、基于分组分类的原则,设置线程池,RSF线程池没有物理分开,是基于信号量区分不同的线程池; 3、根据业务,可以将接口划分为:核心对外服务接口,核心流程接口、关联核心流程接口,其他非核心流程; 4、根据接口分类,建立不同的分组,例如核心对外服务接口设置并发200,核心流程接口100,关联核心流程接口50,其他非核心流程40。 5、可以继续设置分层,如划分为三层,1级、2级、3级。针对不同分类接口设置三层。例如核心对外服务接口设置并发三级,1级300,2级200,3级150.其他类似。统筹分类分层。 6、在接口上挂上分组。 |