目录
分布式服务监控
三高系统要关注哪些系统指标?
一、核心指标分类与关键点
1. 高并发指标(抗压能力)
指标 | 监控要点 | 实践建议 |
---|---|---|
并发用户数 | 区分真实用户(UA统计)与系统连接数(TCP/HTTP)。 | 结合负载均衡器日志分析真实并发,避免被爬虫或长连接干扰。 |
QPS/TPS | 动态接口(业务逻辑)与静态资源(CDN)分离统计。 | 网关层限流(如Nginx limit_req ),防止突发流量击穿后端。 |
事务处理能力 | 定义事务边界(如支付=订单+扣款+日志)。 | 引入分布式事务(如Seata)或补偿机制(如TCC),保证最终一致性。 |
线程池利用率 | 活跃线程数/最大线程数(如Tomcat maxThreads )。 |
线程数=CPU核心数×(1+等待时间/计算时间),避免过多线程导致上下文切换开销。 |
2. 高性能指标(效率优化)
指标 | 监控要点 | 实践建议 |
---|---|---|
响应时间(RT) | 关注P99/P999(长尾延迟),而非平均值。 | 慢请求根因分析:数据库索引缺失、GC停顿(如Young GC耗时>50ms)。 |
吞吐量 | 网络吞吐(带宽限制)、业务吞吐(如订单/秒)。 | Kafka分区数=消费者实例数,提升并行处理能力。 |
资源利用率 | CPU(60%~70%)、内存(JVM堆≤70%)、磁盘IO(SSD延迟<1ms)。 | 使用Cgroup限制容器资源,避免争抢;Redis大Key拆分降低内存碎片。 |
3. 高可用指标(容灾与恢复)
指标 | 监控要点 | 实践建议 |
---|---|---|
SLA(可用性) | 99.99% ≈ 年故障≤52分钟,依赖链SLA相乘(如3个99.9%服务→99.7%)。 | 核心服务多AZ部署,非核心服务降级(如关闭推荐模块保支付)。 |
MTTR(恢复时间) | 从故障发现到恢复的全链路时间(告警→定位→修复)。 | 预案自动化:K8s Pod自愈、数据库主从切换(VIP漂移)。 |
数据一致性 | MySQL主从延迟(Seconds_Behind_Master )、Redis异步复制延迟。 |
关键业务用同步写(如金融交易),非关键业务异步化(如日志)。 |
二、关联性分析与复合场景
1. 并发与性能的权衡
-
案例:线程池过小→请求排队→RT上升;线程池过大→CPU竞争→吞吐下降。
解法:动态线程池(如Hystrix配置实时调整)。
2. 性能与可用的冲突
-
案例:缓存雪崩时,直接透传数据库→性能骤降→服务不可用。
解法:熔断降级(如Sentinel)+本地缓存兜底。
3. 全链路监控
-
工具链:
-
指标:Prometheus(资源/应用指标)
-
链路:SkyWalking(追踪慢请求)
-
日志:ELK(关联错误日志与指标)
-
-
示例:
QPS↑ → CPU↑ → RT↑ → 错误率↑ → 熔断触发
,需联动分析。