Linux服务器性能参数和指令

在 Linux 服务器性能分析中,关键参数涵盖 CPU、内存、磁盘、网络等子系统,配合常用指令可高效监控和排查性能问题。以下是核心性能参数及对应指令的详细介绍:

一、CPU 性能参数与指令

关键参数

  1. CPU 使用率:用户态(%user)、内核态(%system)、空闲(%idle)、等待 IO(%iowait)、中断(%irq)、软中断(%softirq)。
  2. 负载均衡:系统平均负载(load average,1 分钟、5 分钟、15 分钟)。
  3. 上下文切换:进程切换次数(context switches)。
  4. 进程状态:运行、睡眠、阻塞进程数。

常用指令

  1. top/htop(实时进程监控)
    • 显示 CPU 各核心使用率、进程 CPU/MEM 占用、负载等。
    • 常用选项:
      top -d 5        # 每5秒刷新一次  
      top -c          # 显示完整进程命令  
      htop -p <PID>   # 监控特定进程  
      
       
    • 关键指标:%CPU(进程 CPU 占用)、load average(系统负载)。
  2. vmstat(系统整体统计)
    • 显示 CPU、内存、磁盘、上下文切换等综合数据。
    • 示例:
      vmstat 2 5       # 每2秒采样,共5次  
      
       
    • 输出解析:us(用户态)、sy(内核态)、id(空闲)、wa(IO 等待)。
  3. sar(系统活动报告,需安装sysstat包)
    • 历史性能数据统计,支持按时间范围查询。
    • 示例:
      sar -u 1 3       # 实时CPU使用率  
      sar -u -f /var/log/sa/sa20  # 查看某天日志(如sa20对应20号)  
      
       
  4. pidstat(进程级 CPU 统计)
    • 精准定位占用 CPU 的进程 / 线程。
    • 示例:
      pidstat -u 1     # 每1秒显示进程CPU占用  
      pidstat -u -t 1  # 显示线程级CPU占用  
      
       

二、内存性能参数与指令

关键参数

  1. 内存使用率:总内存、已用、空闲、缓冲(buffers)、缓存(cache)。
  2. Swap 使用:Swap 空间大小、已用 Swap、Swap 换入 / 换出速率(swap in/out)。
  3. 内存碎片:连续可用内存块大小。

常用指令

  1. free/pmap(内存概况)
    • free 显示内存和 Swap 整体使用情况:
      free -h          # 以可读格式显示  
      free -w          # 显示内存碎片信息  
      
       
    • pmap <PID> 查看进程内存映射(如共享库、堆 / 栈占用)。
  2. vmstat(内存相关指标)
    • 输出解析:free(空闲内存)、swap(Swap 已用)、si/so(Swap 换入 / 换出速率)。
  3. top/htop(进程内存占用)
    • 关键指标:%MEM(进程内存占用)、VIRT(虚拟内存)、RES(物理内存)、SHR(共享内存)。
  4. smem(详细内存统计,需安装)
    • 按进程 / 用户分组统计内存,区分共享 / 私有内存:
      smem -t          # 按类型汇总  
      smem -p <PID>    # 查看进程内存细节  
      
       

三、磁盘性能参数与指令

关键参数

  1. IO 吞吐量:读 / 写带宽(MB/s)。
  2. IOPS:每秒输入输出操作数(随机小文件场景关键)。
  3. 响应时间:IO 请求平均处理时间(await)。
  4. 队列长度:等待处理的 IO 请求数(avgqu-sz)。
  5. 设备利用率:磁盘忙时百分比(%util)。

常用指令

  1. iostat(磁盘 IO 统计)
    • 显示各磁盘设备的 IO 性能:
       
      iostat -x 1      # 输出扩展信息,每1秒刷新  
      
       
    • 关键指标:r/s/w/s(读写 IOPS)、rMB/s/wMB/s(读写带宽)、await(IO 响应时间)、%util(设备利用率)。
  2. dstat(多维度统计,需安装)
    • 同时监控 CPU、内存、磁盘、网络:
      dstat -cdngy 1   # 显示磁盘、网络等,每1秒刷新  
      
       
  3. iotop(实时磁盘 IO 进程监控)
    • 定位占用磁盘 IO 的进程:
       
      iotop -o        # 仅显示有IO操作的进程  
      iotop -P        # 显示进程所属的PID  
      
       
  4. blkstat(块设备详细统计,需安装sysstat
    • 查看历史磁盘 IO 数据:
      blkstat /dev/sda  # 显示sda磁盘的IO统计  
      
       

四、网络性能参数与指令

关键参数

  1. 带宽利用率:发送 / 接收速率(bps/MB/s)。
  2. 网络延迟:往返时间(RTT)、端口状态(ESTABLISHED/TIME_WAIT)。
  3. 错误统计:丢包率、校验和错误、帧错误。
  4. 连接数:并发连接数、TCP 状态分布。

常用指令

  1. ss/netstat(网络连接统计)
    • ss 更高效,替代传统netstat
      ss -tun         # 显示TCP/UDP连接  
      ss -s           # 显示网络统计摘要  
      netstat -antp   # 显示所有TCP连接及对应进程  
      
       
    • 关键指标:ESTABLISHED(已建立连接)、TIME_WAIT(等待关闭连接)。
  2. iftop/nload(实时网络流量)
    • iftop 按进程 / IP 显示网卡流量:
      iftop -i eth0    # 监控eth0网卡  
      
       
    • nload 实时显示网卡上下行速率:
      nload eth0      # 监控指定网卡  
      
       
  3. sar(网络历史统计)
    • 查看网卡流量、错误统计:
      sar -n DEV 1 3   # 实时网卡流量统计  
      sar -n ERROR 1 3 # 显示网络错误(丢包、校验和等)  
      
       
  4. tcpdump(网络抓包分析)
    • 捕获指定网卡的数据包(需结合 Wireshark 分析):
      tcpdump -i eth0 -n host 192.168.1.100  # 抓取特定IP的流量  
      
       

五、其他关键参数与指令

1. 系统资源限制(ulimit)

  • 参数:进程打开文件数、内存限制、CPU 时间等。
  • 指令:
    ulimit -a          # 查看当前用户资源限制  
    ulimit -n 65536    # 临时修改最大打开文件数(需root)  
    
     

2. 内核参数(sysctl)

  • 关键参数:vm.swappiness(Swap 使用倾向)、net.ipv4.tcp_fin_timeout(TIME_WAIT 超时)、fs.file-max(系统最大打开文件数)。
  • 指令:
    sysctl -a | grep vm.swappiness  # 查看Swap参数  
    sysctl -w vm.swappiness=10      # 临时修改参数  
    
     

3. 进程资源占用(lsof)

  • 查看进程打开的文件、网络连接:
    lsof -p <PID>     # 查看进程打开的所有句柄  
    lsof -i:80        # 查看占用80端口的进程  
    
     

六、性能分析流程建议

  1. 整体概览:用top/htop查看 CPU/MEM 整体负载,free/vmstat确认内存 / Swap 压力,iostat检查磁盘 IO 是否饱和。
  2. 深入定位:
    • CPU 高占用:用pidstat -u定位具体进程 / 线程。
    • 内存泄漏:用pmap/smem分析进程内存分布,结合freecache/buffer变化。
    • 磁盘瓶颈:若%util接近 100% 且await高,排查是否存在大量随机 IO(如数据库慢查询)。
    • 网络问题:用ss查看端口状态,iftop确认流量异常来源,tcpdump抓包分析协议层问题。
  3. 历史分析:通过sar读取日志,分析性能指标的长期趋势(如周期性负载高峰)。

总结

Linux 服务器性能分析需结合多维度参数,通过top/vmstat/iostat等指令快速定位问题,再用pidstat/iotop/ss等工具深入进程级细节。同时,合理配置内核参数(sysctl)和资源限制(ulimit)可优化系统性能。实际操作中,建议结合监控工具(如 Prometheus、Zabbix)实现持续性能追踪。

posted on 2025-04-30 09:11  阿陶学长  阅读(313)  评论(0)    收藏  举报