在Linux系统中如何查看8vCPU32GB服务器的实际资源使用情况?

在 Linux 系统中查看 8vCPU、32GB 服务器的实际资源使用情况,可以通过以下常用命令和工具实现。以下是分场景的实用方法:


一、CPU 使用情况

1. tophtop(实时动态监控)

top -d 1      # 每1秒刷新一次
# 或安装后使用 htop(更友好)
sudo apt install htop   # Debian/Ubuntu
yum install htop        # CentOS/RHEL
htop
  • 关注:%Cpu(s) 行中的 us(用户态)、sy(内核态)、id(空闲)、wa(IO等待)
  • F6 可排序,按 P 按 CPU 使用率排序进程

2. mpstat(来自 sysstat 包,统计历史/实时 CPU 细分)

sudo apt install sysstat   # 或 yum install sysstat
mpstat -P ALL 1            # 每秒刷新,显示每个 CPU 核心使用情况
  • 输出中 usr + sys + nice + iowait ≈ 总占用;idle 为空闲比例
  • 对于 8 核机器,若某核长期 >90%,说明负载不均或存在瓶颈

3. vmstat(综合视图)

vmstat 1
  • 关注 r(运行队列长度)、b(阻塞进程数)、si/so(交换活动)

二、内存使用情况

1. free -h(简洁版)

free -h

示例输出解读:

              total        used        free      shared  buff/cache   available
Mem:           32G         4.5G        12G          200M       15.5G        27G   ← 可用内存
Swap:          2G          0B          2G
  • 关键点:看 available 而非 free!系统会复用缓存,真正可用的内存是 available
  • used + cache 接近 32G 但 available 仍高,属正常现象

2. smem(更精确的进程级内存分析,含 PSS/USS)

sudo apt install smem    # 或从源码编译
smem -k | head -20       # 按 RSS 排序前20进程
smem -t                  # 表格格式汇总
  • USS(Unique Set Size):进程独占内存
  • PSS(Proportional Set Size):含共享页分摊,更接近真实开销

3. /proc/meminfo(底层数据源)

grep -E 'MemTotal|MemFree|MemAvailable|Cached|Slab' /proc/meminfo

三、磁盘 I/O 与网络

1. iostat(磁盘读写性能)

sudo apt install iotop sysstat
iostat -x 1                # 每秒刷新,显示 %util(利用率)、await(平均等待时间)
iotop -o                   # 实时显示哪些进程在做 IO(需 root)
  • %util > 80% 表示磁盘可能成为瓶颈
  • await 高说明响应延迟大

2. sar(历史趋势分析,需启用 sysstat 记录)

# 查看今日 CPU/内存/IO 历史记录
sar -u 1 5                 # 每5秒采一次,共5次
sar -r                     # 内存历史
sar -b                     # 网络/IO 历史

⚠️ 默认 sysstat 不自动记录,需编辑 /etc/default/sysstat 设置 ENABLED="true" 并重启服务

3. iftop / nethogs(网络流量)

sudo apt install iftop nethogs
iftop                      # 实时带宽监控
nethogs                    # 按进程显示网络占用

四、进阶:容器/虚拟化环境注意事项

  • 若是 KVM/QEMU 虚拟机:宿主机限制可能影响表现。用 virsh domstats <vm-name>virt-top 查看虚拟资源配额
  • 若是 Docker/K8s 容器
    docker stats --no-stream       # 所有容器资源
    kubectl top pod --all-namespaces  # K8s 节点资源
  • 检查 cgroup 限制:
    cat /sys/fs/cgroup/cpu,cpuacct/cpu.cfs_quota_us
    cat /sys/fs/cgroup/memory/memory.limit_in_bytes

五、一键诊断脚本(推荐保存为 check-server.sh

#!/bin/bash
echo "=== CPU (last 10s avg) ==="
mpstat -P ALL 1 10 | tail -1
echo -e "n=== Memory ==="
free -h
echo -e "n=== Top 5 Memory Processes ==="
ps aux --sort=-%mem | head -6
echo -e "n=== Disk I/O (last 5s) ==="
iostat -x 1 5 | tail -10
echo -e "n=== Swap Activity ==="
vmstat 1 5 | grep -A1 "^procs|^swap"

赋予执行权限:chmod +x check-server.sh && ./check-server.sh


如你有具体场景(例如:应用卡顿、数据库慢查询、批量任务堆积),我可进一步针对性分析日志或调优建议。需要吗?