评估Linux服务器性能需要从多个维度进行综合分析,以下是一套系统化的评估方法和工具指南:
CPU性能
top/htop
:实时监控CPU使用率和进程vmstat 1
:查看系统上下文切换(cs)和中断(in)mpstat -P ALL 1
:多核CPU分核心统计sar -u 1 3
:历史CPU数据(需安装systat
)内存性能
free -h
:查看内存和Swap使用情况vmstat 1
:监控swap in/out(si/so)cat /proc/meminfo
:详细内存信息磁盘I/O
iostat -x 1
:监控设备利用率(%util)和响应时间(await)iotop
:按进程统计磁盘I/Odmesg | grep -i "IO"
:检查内核级I/O错误网络性能
iftop -n
:实时流量监控netstat -s
:统计TCP/UDP错误ping/mtr
:网络延迟和路由追踪nload
:分设备流量统计系统负载
uptime
:快速查看负载cat /proc/loadavg
:详细负载数据综合监控
dstat
:整合CPU/内存/磁盘/网络数据glances
:跨平台综合监控工具nmon
:生成分时性能报告(支持导出CSV)日志分析
journalctl -u service_name
:查看服务日志dmesg -T
:分析内核日志时间戳压测工具
stress-ng
:模拟CPU/内存/I/O压力fio
:磁盘I/O基准测试iperf3
:网络带宽测试指标 | 警告阈值 | 危险阈值 |
---|---|---|
CPU利用率 | >70% 持续5分钟 | >90% 持续10分钟 |
内存使用率 | >80% | >90% + Swap使用 |
磁盘%util | >70% | >90% |
Load Average | >CPU核心数 | >3倍CPU核心数 |
TCP重传率 | >1% | >5% |
快速定位方向
# 一键获取关键指标(示例)
echo "Load: $(uptime); CPU: $(mpstat -P ALL 1 1 | grep -v Average); Memory: $(free -h)"
分层排查
iostat -x 1
)perf top
)cat /proc/meminfo | grep -i cache
)持久化监控
Prometheus + Grafana
长期监控ELK
收集日志分析趋势CPU密集型
nice/renice
)taskset
)内存不足
sysctl vm.swappiness
)磁盘I/O瓶颈
echo deadline > /sys/block/sda/queue/scheduler
)网络优化
sysctl -w net.ipv4.tcp_window_scaling=1
)ethtool -L eth0 combined 4
)#!/bin/bash
echo "===== $(date) Performance Snapshot ====="
echo "CPU: $(uptime)"
echo "Memory: $(free -h | grep -B1 'available')"
iostat -x 1 3 | grep -A1 '%util'
echo "Top Processes:"
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 5
通过以上方法,可以系统化评估Linux服务器性能并快速定位瓶颈。建议根据实际业务场景建立基线数据(Baseline),异常时对比分析更高效。