服务稳定性保障全景图
2021-01-28 21:44:48 1 举报
AI智能生成
服务的稳定性建设规划
作者其他创作
大纲/内容
阻碍核心流程、有特殊含义,需要立即介入
特定错误码
连续出现N次,覆盖所有错误码,需要关注
兜底错误码
业务错误码监控
按场景覆盖
业务核心指标
request time
response time
根据需要再细分(以nginx为例可以添加readHeader time、parseBody etc)
耗时监控
业务指标监控
立即介入
FATAL
需要关注
WARNING
日志分级
日志分级监控
日志
telnet/nc/lsof/ps/health check
ping/ssh port 多机房监控机器投票
检测工具
端口/进程存活/机器存活
Off/CPU
On/CPU
top/pidstat/sar/htop/strace/perf/systemtap/dstat
CPU
vmstat/top/pidstat/sar/free/dstat
Mem
top/w
Load avg
iostat/iotop/sar/pidstat/dstat
IO/Disk
dmesg
OOM
coredump 调整coredump位置,大小限制,频次限制,core_filter ,core_pattern
gdb/strace
Core dump
ps/proc/ulimit
Fd
网络连通性
丢包(SYN重传、两个队列满)
netstat/ss/sar/nc/tcpdump/dig/traceroute/ethtool/wireshark/mtr
Net
机器基础指标监控
RPC Error Ratio
RPC Lantency
RPC Call Counter
RPC Call Error Counter
Caller/Callee/Caller-func/Callee-func 四元组
RPC监控
Metric
open-falcon
prometheus
grafana
工具
监控
同环比
阈值
训练
智能化/AI(极端天气、假期等因素)
模型
IM
邮件
短信
电话
分级
zabbix
告警
核心主流程(一级)
其他(二级)
服务分级
核心体验(二级)
其他(三级)
接口分级
限制入口流量
集中式限流
限制单机流量
分布式限流
动态分配限流值
Quota Server
Caller分级,保高优Caller
基于Caller限流
限流
时延(50/95/99分位)
QPS
成功率
SLA指标
基础监控错误率
业务错误码
自动熔断
业务大盘/监控大盘
手动熔断
熔断
熔断下游RPC
核心功能有损
降频
体验有损
业务降级
动态修改超时
动态修改重试次数
快速失败
线性退避
随机退避
指数退避
退避策略
重试熔断\t
链路上传错误标志\t
链路下传重试标志\t
DDL\t(check sla)
框架熔断(过载保护/影响重试)
防止 retry storm
超时重试治理
清理无效开关
自动执行
定期演练
降级
高可用/HA
small集群
可复制
单元化建设
同城双活
异地双活
两地三中心
双向同步(binlog/mq)
避免成环
双写
最终一致性
数据同步
异地多活
IO
延时
服务宕机
服务假死
放火/放火
混沌工程
容灾
负载均衡
DNS切流
基于业务特征切流
服务级切流
南北向流量
Service Mesh
东西向流量
流量调度
软路由切换
故障转移
生成环境差异点
在线、离线触发事件
多地域高仿真流量模拟
仿真度评估
发现瓶颈问题闭环
定期压测
自动压测
端到端流量染色与数据隔离
全链路压测风险熔断
任意服务便捷Mock
无人值守
子/全链路压测
调节权重
哨兵压测
压测
正常线上容量验证
流量放大倍数拓扑关联
容量水位评估
Application
构造数据,极限压测
Storage
容量评估
df -h/df -i
ls -lh
du -sh
磁盘
获取CPU/内存使用率最高的pid,启动命令等信息
top查看进程状态
获取CPU/内存使用率最高的线程信息
top -H 查看线程状态
free -h查看内存使用情况
内存
服务器
jstack查看jvm线程运行信息
线程
-Xms
-Xmx
指定合适容量
-XX:+HeapDumpOnOutOfMemoryError -XXHeapDumpPath=/data/logs
OOM自动dump内存快照
jmap -heap查看堆区域统计信息
jmap -dump导出内存镜像
利用jmap查询jvm内存使用信息
指定合适的垃圾收集器
利用GC日志查询GC信息
利用-XX:+PrintGCDetails -Xloggc:/tmp/gc.txt打印GC日志
jstat -gccause pid
查看垃圾收集的统计信息
GC
Java
ltrace查看哪些函数占比多
cachetools
pstack
用户态
opcache
realpath_cache
文件类操作过多(open\\access\\stat64)
strace查看系统调用
pm.max_children
进程数
上下文切换
内核态
perf top/record
火焰图
ps
进程
PHP
pprof
go-torch
gcore
strace
gdb
GO
use index
小表驱动大表
explain分析查询计划
show processlist,kill慢SQL
long_slow_query 慢查询日志
慢SQL
set global max_connections增大连接数
show processlist,kill SQL释放链接
连接过多
事务隔离级别
表锁
页锁
Record Lock
Gap Lock
Next-key Lock
行锁
意向锁
锁时序分析
死锁
数据库
rdbtools查询大key
redis-cli查询大key
利用debug object key查看key系列化后的大小
大key
config set maxmemory 临时增加内存
指定内存淘汰机制(LRU等)
内存不足
config set maxclient临时增加最大连接数
限制客户端最大连接数
连接数过多
config set slowlog-log-lower-than 设置慢查询阈值
config set slowlog-log-max-len 设置最大慢查询记录保存数
slowlog get查询慢查询命令
慢命令
redis-cli -latency查询延迟信息
查询网络哦延迟
Redis
应用
metric
基础组件日志
tcpdump/wireshark
netstat/ss/dig/route/arp/traceroute/lsof
网络
业务日志分析
业务异常
排查思路
问题定位排查
技术输出
文化运营
奖惩机制
运营机制
不可用时长
链路拓扑完备度
SLA大盘完备度
容量水位大盘
MTTD/MTTF/MTBF
etc.
服务治理大盘
度量评估体系
稳定
多语言支持
包管理(glide、composer)
标准化
PlayBook
插件可插拔
易用性/可维护/易运维
关键指标埋点
性能分析
规范化/标准化
基础组件
业务组件
组件化
Feature
业务研发框架
HTTP
Thrift
gRPC
传输协议
json
xml
binary
protobuf
数据压缩
服务发现
放火能力
限流/熔断
Trace追踪
针对压测流量自动熔断
压测标记
能力手段
caller/callee四元组
数据埋点
服务治理RPC框架 / Service Mesh
全链路拓扑
skywalking
Zeppelin
分布式追踪系统
全链路追踪
研发框架
资源使用情况
运行时分析
RPC调用链分析
函数CPU耗时分析
调用链分析
去除无用业务及逻辑
按照可能性大到小写if/else分支
业务逻辑优化
动态分析
AST语法分析
静态调用链分析
冗余代码清理
静态分析
异步/并行/事件驱动
性能优化
lint扫描
data race检测
死锁检测
代码复杂度检测
影响面评估
代码规范/质量
UT
分支/行覆盖率
TDD
单测框架
流量回放
接口级测试
自动化生成
人工补齐
Case管理
系统级测试
测试
趋势
跟人相关报表
bug率报表
质量评估体系
代码质量
线下环境(development)
灰度环境(beta)
正式环境(production)
环境
pipeline
jekins
金丝雀
蓝绿
灰度发布
CI/CD
DevOPS
效率
弹性伸缩
Serverless
服务上云
减少调用量
精简代码逻辑
业务复杂度
服务缩容
定价方式
分摊比例
下游分摊
初始立项、确立负责人跟运维CMDB系统打通
服务准入
负责人动态变更维护
阶段changelog
服务状态(稳态运营阶段的描述,上下游拓扑)
版本控制/版本强升
无流量服务/功能强制下线
服务下线,资源回收,残存配置清理
服务生命周期
服务下线机制
CPU利用率40%
在离线混合部署
资源利用率
导师培训制度
文档答疑自动化
核心服务主备,降低人员离职带来的额外成本风险
提升效率缩减人力
自动化能力
人力成本
精简日志
精简ES存储
日志冷备入hdfs
合理设计使用正确的数据结构
合理设置TTL
读写收敛到对应微服务内
按需存取
数据归档
删除不必要数据
MySQL
存储
对账
幂等
可重入
异步通知
资损
成本
稳定性/效率
收藏
0 条评论
回复 删除
下一页