当前位置: 首页 > news >正文

Linux系统调优和工具

Linux系统调优和问题定位需要掌握一系列强大的工具,涵盖系统监控、性能分析、故障排查等多个方面。以下是一些核心工具和它们的典型应用场景,分类整理如下:

一、系统资源监控(实时概览)

  1. top / htop

    • 功能: 实时动态查看系统整体性能指标(CPU、内存、Swap、负载)和进程资源占用(CPU%、MEM%、状态、命令)。
    • 用途: 快速识别资源消耗大户(CPU、内存)、僵尸进程、系统负载情况。htoptop的增强版,支持颜色、鼠标操作、树状视图、更友好的界面。
    • 常用命令:
      • top (进入后按P按CPU排序,M按内存排序,1显示所有CPU核心)
      • htop
  2. vmstat

    • 功能: 报告虚拟内存统计信息、进程、块IO、中断、CPU活动。
    • 用途: 快速查看系统整体瓶颈方向(CPU等待io wa值高表示IO瓶颈,r队列长表示CPU饱和,si/so高表示内存不足触发Swap交换)。
    • 常用命令: vmstat 1 (每秒刷新一次)
  3. dstat

    • 功能: 全能系统资源统计工具,整合了vmstat, iostat, ifstat, netstat等工具的功能,支持彩色输出、CSV导出。
    • 用途: 同时监控CPU、磁盘、网络、内存、中断、上下文切换等,一目了然发现关联性(如网络流量激增时磁盘IO是否也高)。
    • 常用命令: dstat -cdngym --top-cpu --top-mem

二、CPU 性能分析

  1. mpstat

    • 功能: 报告每个CPU或所有CPU的平均使用情况,包括用户态、内核态、空闲、IO等待、软硬中断、虚拟化占用等。
    • 用途: 查看CPU使用是否均衡,是否存在单个核心过载,分析CPU时间消耗在用户态还是内核态。
    • 常用命令: mpstat -P ALL 1
  2. pidstat

    • 功能: 监控进程/线程的CPU、内存、IO等使用情况。
    • 用途: 细粒度定位具体哪个进程/线程消耗CPU高。
    • 常用命令:
      • pidstat -u 1 (查看所有进程CPU使用)
      • pidstat -t -p <PID> 1 (查看特定进程的所有线程CPU使用)
  3. perf

    • 功能: Linux内核提供的强大性能分析工具(性能计数器)。
    • 用途:
      • perf top:实时显示消耗CPU最多的函数/指令(类似top,但深入到函数级)。
      • perf record / perf report:录制性能事件(如CPU周期、缓存命中/失效、分支预测失误),生成报告进行离线分析。
      • perf stat:运行一个命令并统计其性能计数器(指令数、周期数、缓存引用/失效等)。
    • 用途: 深入分析CPU热点(哪些函数最耗时)、缓存效率、分支预测问题,定位代码级性能瓶颈。
  4. uptime

    • 功能: 显示系统运行时间、当前登录用户数和系统平均负载。
    • 用途: 快速了解系统负载趋势(1分钟、5分钟、15分钟平均值)。负载高于CPU核心数通常表示存在排队。

三、内存 性能分析

  1. free

    • 功能: 显示系统总体内存和Swap使用情况(总量、已用、空闲、缓冲、缓存)。
    • 用途: 快速了解物理内存和Swap空间的使用压力。关键看available(可用内存,包含可回收的缓存/缓冲)。
    • 常用命令: free -h (以人类可读格式显示)
  2. vmstat (见上文)

    • 用途: 关注si(每秒从Swap读入内存)、so(每秒从内存写入Swap)。si/so持续大于0是内存不足的强烈信号。
  3. pidstat (见上文)

    • 用途: pidstat -r 1 查看进程的内存使用(常驻集RSS、虚拟内存VSZ、缺页异常)。
  4. pmap

    • 功能: 报告指定进程的详细内存映射情况。
    • 用途: 分析进程内存具体用在哪些库、堆、栈上,查找内存泄漏嫌疑区域。
    • 常用命令: pmap -x <PID>
  5. slabtop

    • 功能: 实时显示内核slab缓存(内核对象缓存)的使用情况。
    • 用途: 诊断内核级内存消耗或泄漏。

四、磁盘 I/O 性能分析

  1. iostat

    • 功能: 监控系统所有磁盘设备的IO统计信息(TPS、读写速度、读写延迟、队列长度、设备利用率%util)。
    • 用途: 识别磁盘瓶颈(高%util、长await/wait表示设备饱和或慢)、对比不同磁盘性能。
    • 常用命令: iostat -dx 1 (查看设备详细统计,每秒刷新)
  2. iotop

    • 功能: 类似top,但实时显示按磁盘IO排序的进程/线程。
    • 用途: 快速定位哪个进程在进行大量磁盘读写。
    • 常用命令: iotop
  3. pidstat (见上文)

    • 用途: pidstat -d 1 查看进程的磁盘读写统计(kB_rd/s, kB_wr/s)。
  4. lsof

    • 功能: 列出被进程打开的文件。
    • 用途: 结合iostat/iotop定位到具体进程后,查看该进程正在读写哪些文件。
    • 常用命令: lsof -p <PID>
  5. blktrace / blkparse / btt

    • 功能: 强大的块设备层IO跟踪分析工具套件。
    • 用途: 深入分析IO请求在块设备层(从文件系统下发到设备驱动完成)的生命周期和延迟分布,定位IO栈中的具体瓶颈点。学习曲线较陡。

五、网络 性能分析

  1. netstat / ss

    • 功能: 显示网络连接、路由表、接口统计、伪装连接、组播成员等信息。ss (socket statistics) 是netstat的现代替代品,通常更快更高效。
    • 用途: 查看连接状态(如大量TIME_WAITCLOSE_WAIT)、监听端口、网络接口流量统计、路由信息。
    • 常用命令:
      • ss -tunap (查看所有TCP/UDP连接及对应进程)
      • netstat -s / ss -s (查看网络栈统计汇总)
      • netstat -i / ip -s link (查看网络接口统计)
  2. ip

    • 功能: 强大的网络接口、路由、邻居(ARP)、隧道等配置和管理工具(替代老旧的ifconfig, route, arp)。
    • 用途: 配置和查看网络接口、路由表、ARP缓存等。
    • 常用命令:
      • ip addr show
      • ip route show
      • ip neigh show (ARP表)
  3. ethtool

    • 功能: 查询和控制网络接口驱动参数和硬件设置。
    • 用途: 查看网卡驱动信息、速度、双工模式、统计信息(丢包、错包)、调整Ring Buffer大小等。
    • 常用命令: ethtool <interface>, ethtool -S <interface> (查看详细统计)
  4. tcpdump / wireshark

    • 功能: 强大的网络抓包和分析工具。tcpdump是命令行工具,wireshark是带图形界面的分析器。
    • 用途: 捕获和分析网络数据包,诊断网络连接问题、协议问题、性能问题(重传、乱序、窗口大小)。非常底层,需要网络协议知识。
  5. nload / iftop

    • 功能: 实时监控网络接口的流量(带宽使用)。nload显示总带宽,iftop按连接对显示带宽使用排名。
    • 用途: 快速查看哪个连接或主机占用了大量带宽。
  6. ping / traceroute / mtr

    • 功能: 测试网络连通性、路径和延迟。mtr (My Traceroute) 结合了pingtraceroute的功能。
    • 用途: 诊断网络可达性、路由路径、网络延迟和丢包发生在哪一跳。

六、系统日志分析

  1. dmesg

    • 功能: 查看内核环形缓冲区中的消息。
    • 用途: 诊断硬件问题(驱动加载失败、设备错误)、内核崩溃信息(Oops/Panic)、文件系统错误、内存不足事件等。系统启动异常或硬件故障排查必看!
    • 常用命令: dmesg -T (带时间戳), dmesg | grep -i error
  2. journalctl (Systemd系统)


文章转载自:
http://campshedding.zzgtdz.cn
http://ceramide.zzgtdz.cn
http://bioastronautic.zzgtdz.cn
http://anadem.zzgtdz.cn
http://asarh.zzgtdz.cn
http://backstairs.zzgtdz.cn
http://castanets.zzgtdz.cn
http://caenozoic.zzgtdz.cn
http://blanch.zzgtdz.cn
http://catharine.zzgtdz.cn
http://aluminiferous.zzgtdz.cn
http://anthroposere.zzgtdz.cn
http://cauterization.zzgtdz.cn
http://amatory.zzgtdz.cn
http://canalisation.zzgtdz.cn
http://antihistaminic.zzgtdz.cn
http://calcarious.zzgtdz.cn
http://bratwurst.zzgtdz.cn
http://bloodshedding.zzgtdz.cn
http://betoken.zzgtdz.cn
http://cheth.zzgtdz.cn
http://chagrin.zzgtdz.cn
http://boney.zzgtdz.cn
http://chaparral.zzgtdz.cn
http://antiphony.zzgtdz.cn
http://blottesque.zzgtdz.cn
http://botulinus.zzgtdz.cn
http://brassiness.zzgtdz.cn
http://antiscriptural.zzgtdz.cn
http://albata.zzgtdz.cn
http://www.dtcms.com/a/280823.html

相关文章:

  • [面试] 手写题-对象数组根据某个字段进行分组
  • mysql官网的版本历史版本下载
  • 令牌获取与认证机制详解
  • 关键点检测数据格式转换(.JSON转TXT)
  • 【超分论文精读】——LightBSR(ICCV2025)
  • 梳理Bean的创建流程
  • mongoDB的CRUD
  • Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
  • 云服务器如何管理数据库(MySQL/MongoDB)?
  • 基于STM32G431无刷电机驱动FOC软硬件学习
  • iOS高级开发工程师面试——常见第三方框架架构设计
  • C++学习笔记五
  • Gemma-3n-E4B-it本地部署教程:谷歌开源轻量级多模态大模型,碾压 17B 级同类模型!
  • SHAP 值的数值尺度
  • Conda 核心命令快速查阅表
  • 技术演进中的开发沉思-35 MFC系列:消息映射与命令
  • Keepalived双机热备
  • 网络安全职业指南:探索网络安全领域的各种角色
  • 003大模型基础知识
  • React 实现老虎机滚动动画效果实例
  • AutojsPro 9.3.11 简单hook
  • Pixel Reasoner:通过好奇心驱动的强化学习激励像素空间推理
  • 简单2步配置CadenceSkill开发编辑器,支持关键字高亮
  • [AI-video] Web UI | Streamlit(py to web) | 应用配置config.toml
  • (李宏毅)deep learning(五)--learning rate
  • 从底层技术到产业落地:优秘企业智脑的 AI 革命路径解析
  • NAT的核心原理以及配置
  • CCF-GESP 等级考试 2025年6月认证Python四级真题解析
  • RDMA over RoCE V2设计2:系统框架设计考虑
  • Datawhale AI夏令营 机器学习2.1