正如飞机在起飞前,机长、副机长要过一遍checklist检查,确认没问题了才能起飞。楼主也整理了一个系统容量现状checklist,方便对照检查。本文搭配架构师必备:如何做容量预估和调优,食用更佳。

作为架构师,不要觉得系统容量是运维工程师才关心的问题,而应当对系统容量现状做到了如指掌。这样才能知道系统的瓶颈在哪,哪些优化是要优先做的,以及为了应对活动期间突发的流量,做多少扩容。

本文分为2大部分,一是资源使用率,二是业务指标。

资源使用率

服务实例

  • 实例个数、每个实例server的工作线程个数、MQ消费组线程个数
  • QPS峰值
  • 接口响应时间:平均、95分位、99分位、最大值
  • CPU使用率峰值
  • 报错数量/秒
  • JVM堆内存使用率峰值
  • GC回收时间
  • 磁盘使用率(如有,一般无本地存储)

MySQL

  • 分库数量、分表数量、从库个数、路由规则
  • QPS峰值、TPS峰值、读写比例
  • CPU使用率峰值
  • 磁盘使用率
  • 有无热点、数据倾斜
  • 行总数
  • 主从复制/同步延迟ms
  • 慢查询数量/秒
  • 长事务数量/秒

Redis

  • 实例个数、集群方式
  • QPS峰值、TPS峰值、读写比例
  • CPU使用率峰值
  • 内存使用率峰值
  • key总数
  • 有无热点实例、有无热点key

HBase

  • 实例个数、region个数
  • CPU使用率峰值
  • 磁盘使用率
  • 行总数
  • compaction时间段
  • 有无热点实例、有无数据倾斜

ElasticSearch

  • 实例个数、分片shard个数、路由规则
  • 文档document个数
  • CPU使用率峰值
  • 磁盘使用率
  • 有无热点实例、有无数据倾斜

消息队列

  • 实例个数、分片partition个数
  • 消息TPS峰值
  • 消费堆积数量
  • CPU使用率峰值
  • 消息保留时长

业务指标

核心流程的业务指标

每个系统都不一样,需要根据实际情况定义业务指标。如:

  • xxx成功率
  • xxx失败率
  • xxx个数、次数
  • xxx时长
  • xxx参与人数
  • xxx金额

状态机流转情况

如图所示,示例的状态机流转情况如下:

  • 流转方向:只能从1流向2,不能从2流向1
  • 前置状态:只能从2或3流向4,不能从1流向4
  • 中间态停留时长:2、3、4是中间状态,不应当长时间停留,否则认为是卡住了
  • 终结状态:5(成功)和6(失败)是终结终态,最终都会变成5或6

因此,需要关心的业务指标如下:

  • 各状态的个数
  • 成功率:成功终结状态的比例
  • 整个流程的时长
  • 卡在中间态的个数、时长

架构师必备:系统容量现状checklist的更多相关文章

  1. Java架构师必备技能:docker使用大全

    前言   java工程师成长为架构师是一个艰难且耗费心力的过程,不仅仅需要熟悉java体系内相关的技术,同时要掌握许多运维相关的操作技能,随着k8s逐渐成为微服务持续集成开发难以越过的基础设施之后,d ...

  2. 向架构师进军--->系统架构设计基础知识

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师 ...

  3. 架构师必备:MySQL主从同步原理和应用

    日常工作中,MySQL数据库是必不可少的存储,其中读写分离基本是标配,而这背后需要MySQL开启主从同步,形成一主一从.或一主多从的架构,掌握主从同步的原理和知道如何实际应用,是一个架构师的必备技能. ...

  4. .NET架构师必备知识

    .NET架构师,我归纳一下要学的知识: 成为优秀程序员,需要学好的知识: 1. 面向对象编程.UML画图.设计模式.代码重构 2. 常用ORM工具 3.  MVC,WCF,XMl, JQuery ,S ...

  5. 架构师必备技能指南:SaaS(软件即服务)架构设计

    1.介绍 从计算机诞生开始,就伴随着计算机应用程序的演变.简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化.上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得 ...

  6. 【原创】架构师必备,带你弄清混乱的JAVA日志体系!

    引言 还在为弄不清commons-logging-xx.jar.log4j-xx.jar.sl4j-api-xx.jar等日志框架之间复杂的关系而感到烦恼吗? 还在为如何统一系统的日志输出而感到不知所 ...

  7. 架构师必备,带你弄清混乱的JAVA日志体系!

    作者:孤独烟 出处:http://rjzheng.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任 ...

  8. 架构师必备:巧用Canal实现异步、解耦的架构

    本文介绍如何应用Canal实现异步.解耦的架构,后续有空再写文章分析Canal原理和源代码. Canal简介 Canal是用来获取数据库变更的中间件. 伪装自己为MySQL从库,拉取主库binlog并 ...

  9. 架构师必备:Redis的几种集群方案

    结论 有以下几种Redis集群方案,先说结论: Redis cluster:应当优先考虑使用Redis cluster. codis:旧项目如果仍在使用codis,可继续使用,但也推荐迁移到Redis ...

随机推荐

  1. 使用vue-cli构建工具构建vue项目时候组件的使用

    <template> <div class="contains"> <!-- <div class="main"> & ...

  2. pytest-mark 参数化

    在类前或用例前用pytest.mark.parametrize ,可进行参数化 传参方式比较灵活,有很多种,下面是列出的几种方式,其他的可自行研究 @pytest.mark.parametrize(& ...

  3. QT 如何让release生成的EXE可在他人电脑上运行(尝试了全网的方法后,这应该能帮你解决)

    这两天,迅速上手了QT并用其基于C++编写了一个含UI的小程序 跳过中间的开发阶段 当我兴致满满的要将程序打包时,却是费尽周折,搜尽全网的关于QT的打包教程,最后都不顶用. 后面自己和队友的共同发现, ...

  4. Django实现统一包装接口返回值数据格式

    前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」. 由于前段时间我写了不少.NetCore的 ...

  5. spring-注入list集合对象(值是对象)

    1.创建stu类 public class Stu { // //1.数组类型 // private String[] courses; // // //2.list集合属性 // private L ...

  6. 一个程序的执行时间可以使用time+命令形式来获得

    编写程序testtime.c #include <stdio.h> //这个头一定要加 #include<time.h> main() { time_t timep; time ...

  7. C# 静态常量(const)动态常量(static、readonly)用法区别

    C# 常量的命名方法 一个低级错误 readonly.const 代码 使用方式 支持类型 维护性 性能比较 优先使用 C# Static 与 Java Static C# Const 与 Java ...

  8. 5.Java程序运行机制

    一.编译型和解释型语言区别 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以任何的高级语言编写的程序都必须转换成计算机语言,也就是机器码.而这种转换的方式有两种: 编译 ...

  9. JavaWeb学习day2-web入门&随笔

    Tomcat详解: 1默认端口号: Tomcat:8080 Mysql:3306 http:80 https:443 2默认主机名:localhost 地址:127.0.0.1 3网站应用默认存放位置 ...

  10. 【面试普通人VS高手系列】CPU飙高系统反应慢怎么排查?

    面试过程中,场景类的问题更容易检测出一个开发人员的基本能力. 这不,一个小伙伴去阿里面试,第一面就遇到了关于"CPU飙高系统反应慢怎么排查"的问题? 对于这个问题,我们来看看普通人 ...