如何用 AWS CLI 判断 T 系列实例 CPU 不够(实战指南)

在使用 AWS EC2 T 系列实例(如 t4g / t3)时,经常会遇到:

  • CPU 使用率很高

  • load 很高(> CPU 核数)

  • PostgreSQL / 应用变慢

  • 但又不确定是不是 CPU 不够

本文通过 AWS CLI + 系统指标,教你如何一步步证明:

👉 你的 CPU 不够(而且是被 CPU Credit 限制)

有个比较简单的方法

这里一直是0的话,说明额度一直是空的,也就是一直被消耗

可以是额度正好被消耗完,也可以是消耗 > 额度


一、T 系列 CPU 的本质(必须理解)

t4g.2xlarge 为例:

复制代码
8 vCPU,但 baseline 只有 40%

换算:

复制代码
8 × 40% = 3.2 vCPU(长期可用)

👉 也就是说:

这台 8核机器,长期性能 ≈ 3.2核


二、核心指标 1:CPUCreditBalance(最关键)

查询命令

复制代码
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUCreditBalance \
  --dimensions Name=InstanceId,Value=你的实例ID \
  --statistics Average \
  --period 60 \
  --start-time 2026-04-22T00:00:00Z \
  --end-time 2026-04-22T23:59:59Z

如何判断

数值 含义
> 100 CPU 有余量
持续下降 正在透支 CPU
≈ 0 ❗ CPU 已被限制

本次优化查询的数据

bash 复制代码
{
    "Label": "CPUCreditBalance",
    "Datapoints": [
        {
            "Timestamp": "2026-04-22T00:55:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T16:50:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T02:40:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T18:35:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T02:05:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T20:20:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T03:50:00+00:00",
            "Average": 0.0,
            "Unit": "Count"
        },
.........

关键结论

复制代码
CPUCreditBalance = 0

👉 表示:

CPU 已经不能再 burst,只能用 baseline(≈3.2核)


三、核心指标 2:CPUCreditUsage(算出真实 CPU 需求)

查询命令

复制代码
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUCreditUsage \
  --dimensions Name=InstanceId,Value=你的实例ID \
  --statistics Sum \
  --period 300 \
  --start-time 2026-04-22T00:00:00Z \
  --end-time 2026-04-22T23:59:59Z

如何计算真实 CPU

这个指标是:

复制代码
5分钟内消耗的 CPU credit

换算公式:

复制代码
CPU核数 ≈ credit / 5

示例

bash 复制代码
{
    "Label": "CPUCreditUsage",
    "Datapoints": [
        {
            "Timestamp": "2026-04-22T00:55:00+00:00",
            "Sum": 30.0007428,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T16:50:00+00:00",
            "Sum": 33.16712308333334,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T02:40:00+00:00",
            "Sum": 26.27567871666667,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T18:35:00+00:00",
            "Sum": 35.062843916666665,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T02:05:00+00:00",
            "Sum": 33.40315138333333,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T20:20:00+00:00",
            "Sum": 35.161372566666664,
            "Unit": "Count"
        },
        {
            "Timestamp": "2026-04-22T03:50:00+00:00",
            "Sum": 17.962388716666666,
            "Unit": "Count"
        },
........

如果看到:

复制代码
30 credit / 5分钟

那么:

复制代码
30 / 5 = 6 CPU

👉 说明:

业务需要 6 个真实 CPU


对比 baseline

复制代码
t4g.2xlarge baseline = 3.2 CPU
实际需求 ≈ 6 CPU

👉 差距:

复制代码
6 - 3.2 = 2.8 CPU(不足)

四、辅助指标 3:CPUUtilization(确认 CPU 打满)

查询命令

复制代码
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=你的实例ID \
  --statistics Average Maximum \
  --period 60 \
  --start-time 2026-04-22T00:00:00Z \
  --end-time 2026-04-22T23:59:59Z

判断

复制代码
Average > 80%
Maximum ≈ 100%

👉 表示:

CPU 已经被打满


五、可选指标(Unlimited 模式)

如果你的实例是 Unlimited 模式,可以查:


1. 超额 CPU(欠债)

复制代码
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUSurplusCreditBalance \
  --dimensions Name=InstanceId,Value=你的实例ID \
  --statistics Average \
  --period 300 \
  --start-time 2026-04-22T00:00:00Z \
  --end-time 2026-04-22T23:59:59Z

2. 被收费的超额 CPU

复制代码
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUSurplusCreditsCharged \
  --dimensions Name=InstanceId,Value=你的实例ID \
  --statistics Sum \
  --period 300 \
  --start-time 2026-04-22T00:00:00Z \
  --end-time 2026-04-22T23:59:59Z

六、系统层面验证(强烈建议)

1. vmstat

复制代码
vmstat 1

重点看:

复制代码
r = 等 CPU 的进程数

判断

如果:

复制代码
r > CPU核数

👉 CPU 不够


2. top

复制代码
top

看:

复制代码
id ≈ 0
load > CPU核数

👉 CPU 已经满载 + 排队


七、最终判断公式(核心总结)

如果你看到:

复制代码
CPUCreditBalance = 0
+ CPUCreditUsage 很高
+ CPUUtilization ≈ 100%
+ vmstat r > vCPU
+ load > vCPU

👉 可以 100% 确认:

CPU 不够(而且是被 T 系列 credit 限制)


八、结论与建议

当前问题本质

复制代码
不是机器太弱
而是 T 系列 CPU 被限速

推荐方案

场景 推荐实例
通用 m6g / m7g
数据库(推荐) r6g / r7g

一句话总结

T 系列不是"低配机器",而是"限速机器",CPU credit 用完后性能会骤降。


相关推荐
光锥智能2 小时前
把OpenAI按在地上摩擦,Anthropic怎么做到的?
大数据·人工智能
RD_daoyi2 小时前
Google SEO第四周:深度站内优化——让网站快速收录、稳定排名的硬核技术
大数据·服务器·人工智能·搜索引擎
芝士爱知识a2 小时前
申论概括归纳题如何拿高分?智蛙公考单一题作答模板
大数据·智蛙公考·申论备考·概括归纳·单一题模板·申论高分
2601_957786772 小时前
分布式媒体中台的流式计算架构:微批处理、拓扑裂变追踪与跨域网关混沌容错实践
大数据·人工智能·矩阵系统·矩阵运营
大大大大晴天2 小时前
Hudi技术内幕:深入理解Hudi文件布局
大数据
谁似人间西林客2 小时前
工厂大脑如何让制造从“人驱”迈向“智驱”
大数据·人工智能·制造
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月3日
大数据·人工智能·python·信息可视化·自然语言处理·灵砚智能
狒狒热知识2 小时前
178软文网软文营销平台完善多层风控体系护航企业稳健安全传播
大数据·人工智能·安全
liana87442 小时前
构建私有化安全协作平台:以金融级协作平台与全链路安全防护体系重塑政企数字化底座
大数据·安全·金融
绘梨衣5472 小时前
豆包Seed PDF解析企业落地方法论
大数据·python·pdf