如何用 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 用完后性能会骤降。


相关推荐
数据狐(Datafox)11 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
雪兽软件11 小时前
大数据导论:类型、属性和示例
大数据
智塑未来12 小时前
2026企业级HR软件选型观察:不同架构阵营格局与复杂用工场景解析
大数据
2601_9673387113 小时前
完结 马士兵大数据架构师
大数据
智购科技自动售货机工厂13 小时前
2026自动售货机语音支付模块集成:从声纹识别到支付闭环的工程实践~YH
大数据·服务器·网络·数据库·人工智能
阿童木写作14 小时前
跨马翻译:AI批量图片翻译工具,视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
小小谈电商14 小时前
2026 年 8 月|国内企业级商城源码服务商全方位测评报告
大数据·运维·小程序
腾视科技-AIoT14 小时前
腾视科技重磅推出TensorAI智能体平台,开启智能助手新体验
大数据·人工智能·科技·ai·ai大模型·ainas·腾视科技
腾视科技-AIoT14 小时前
腾视科技AIBOX双版本重磅发布!本地安全与全球适配,解锁视频智能新可能
大数据·人工智能·科技·ai·物理ai·ainas·腾视科技
ailsa_hui15 小时前
给50人的电子厂上数智云平台,大概要多少预算?
大数据·运维·人工智能