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


相关推荐
明航咨询—张老师7 小时前
软考软件评测师技术深度剖析:2026年考试改革后的知识体系与备考架构
大数据·架构
千桐科技8 小时前
qData 数据中台开源版从 MySQL 到 Doris完成一次数据同步
大数据·mysql·开源·doris·数据中台·qdata
ACP广源盛1392462567310 小时前
GSV6155@ACP# 搭配 AI 服务器、AI PC 完整适配方案
大数据·服务器·人工智能·分布式·单片机·嵌入式硬件
stonewl259912 小时前
2026化工行业 GHS/CLP 国产标签打印软件合规打印方案
大数据·人工智能·物联网
xywww16812 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
Quincy_Freak13 小时前
SQLiteGo V2.3 版本更新说明
大数据·数据库·sqlite·数据库管理·大数据分析·sqlitego
牛奶咖啡1313 小时前
大数据Hadoop运维应用实践——双NameNode高可用Hadoop集群架构(下)
大数据·hadoop·hadoop集群配置文件解析·hadoop高可用集群安装部署·配置指定多台服务器相互免密·配置hadoop服务开机自启·ansible部署hadoop
在水一缸13 小时前
深度解析 GPT-5.6:大模型架构演进与复杂任务实战指南
大数据·人工智能·gpt·架构·大模型·架构演进·gpt-5.6
无忧智库13 小时前
智慧电厂:引领发电行业新革命(PPT)
大数据·人工智能
小果因子实验室14 小时前
量化研究--编写第一个回测算法策略研究
大数据·区块链