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