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://www.pswp.cn/web/89089.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速有效地在WordPress中添加Instagram动态

在当今社交媒体的时代&#xff0c;通过展示Instagram的最新动态&#xff0c;可以有效吸引读者的目光&#xff0c;同时丰富网站内容。很多人想知道&#xff0c;如何把自己精心运营的Instagram内容无缝嵌入WordPress网站呢&#xff1f;别担心&#xff0c;操作并不复杂&#xff0c…

spring容器加载工具类

在Spring框架中&#xff0c;工具类通常不需要被Spring容器管理&#xff0c;但如果确实需要获取Spring容器中的Bean实例&#xff0c;可以通过静态方法设置和获取ApplicationContext。下面是一个典型的Spring容器加载工具类的实现&#xff1a;这个工具类通过实现ApplicationConte…

定时器更新中断与串口中断

问题&#xff1a;我想把打印姿态传感器的角度&#xff0c;但是重定向的打印函数突然打印不出来。尝试&#xff1a;我怀疑是优先级的问题&#xff0c;故调整了串口&#xff0c;定时器&#xff0c;dma的优先级可是发现调了还是没有用&#xff0c;最终发现&#xff0c;我把定时器中…

用Python向PDF添加文本:精确插入文本到PDF文档

PDF 文档的版式特性使其适用于输出不可变格式的报告与合同。但若要在此类文档中插入或修改文本&#xff0c;常规方式难以实现。借助Python&#xff0c;我们可以高效地向 PDF 添加文本&#xff0c;实现从文档生成到内容管理的自动化流程。 本文将从以下方面介绍Python实现PDF中…

Quick API:赋能能源行业,化解数据痛点

随着全球能源结构的转型和数字化的深入推进&#xff0c;能源行业正面临前所未有的机遇与挑战。海量的实时数据、复杂的业务系统、以及对数据安全和高效利用的迫切需求&#xff0c;都成为了能源企业在数字化转型道路上的核心痛点。本文将深入探讨麦聪Quick API如何凭借其独特优势…

Google Chrome V8< 13.6.86 类型混淆漏洞

【高危】Google Chrome V8< 13.6.86 类型混淆漏洞 漏洞描述 Google Chrome 是美国谷歌&#xff08;Google&#xff09;公司的一款Web浏览器&#xff0c;V8 是 Google 开发的高性能开源 JavaScript 和 WebAssembly 引擎&#xff0c;广泛应用于 Chrome 浏览器和 Node.js 等环…

力扣经典算法篇-23-环形链表(哈希映射法,快慢指针法)

1、题干 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…

HarmonyOS DevEco Studio 小技巧 42 - 鸿蒙单向数据流

在鸿蒙应用开发中&#xff0c;状态管理是构建响应式界面的核心支柱&#xff0c;而 单向数据流&#xff08;Unidirectional Data Flow, UDF&#xff09;作为鸿蒙架构的重要设计原则&#xff0c;贯穿于组件通信、状态更新和界面渲染的全流程。本文将结合鸿蒙 ArkUI 框架特性&…

【LeetCode 3136. 有效单词】解析

目录LeetCode中国站原文原始题目题目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;讲解化繁为简&#xff1a;如何优雅地“盘”逻辑判断题第一部分&#xff1a;算法思想 —— “清单核对”与“一票否决”第二部分&#xff1a;代码实现 —— 清晰…

前端面试专栏-算法篇:24. 算法时间与空间复杂度分析

&#x1f525; 欢迎来到前端面试通关指南专栏&#xff01;从js精讲到框架到实战&#xff0c;渐进系统化学习&#xff0c;坚持解锁新技能&#xff0c;祝你轻松拿下心仪offer。 前端面试通关指南专栏主页 前端面试专栏规划详情 算法时间与空间复杂度分析&#xff1a;从理论到实践…

bash中||与的区别

在 Bash 中&#xff0c;|| 和 && 是两种常用的逻辑操作符&#xff0c;用于控制命令的执行流程。它们的核心区别如下&#xff1a;1. ||&#xff08;逻辑 OR&#xff09; 作用&#xff1a;如果前一个命令失败&#xff08;返回非零退出码&#xff09;&#xff0c;则执行后…

OpenCV实现感知哈希(Perceptual Hash)算法的类cv::img_hash::PHash

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 PHash是OpenCV中实现感知哈希&#xff08;Perceptual Hash&#xff09;算法的类。该算法用于快速比较图像的视觉相似性。它将图像压缩为一个简短的…

数据库迁移人大金仓数据库

迁移前的准备工作 安装官方的kdts和KStudio工具 方案说明 一、数据库迁移&#xff1a;可以使用kdts进行数据库的按照先迁移表结构、后数据的顺序迁移&#xff08;kdts的使用可以参考官方文档&#xff09; 其他参考文档 人大金仓官网&#xff1a;https://download.kingbase…

uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)

一、最终效果 二、具体详情请看movable-area与movable-view官方文档说明 三、参数配置 1、代码示例 <TFab title"新建订单" click"addOrder" /> // title:表按钮文案 // addOrder:点击按钮事件四、组件源码 <template><movable-area cl…

linux kernel为什么要用IS_ERR()宏来判断指针合法性?

在 Linux 内核中&#xff0c;IS_ERR() 宏的设计与内核的错误处理机制和指针编码规范密切相关&#xff0c;主要用于判断一个“可能携带错误码的指针”是否代表异常状态。其核心目的是解决内核中指针返回值与错误码的统一表示问题。以下从技术背景、设计逻辑和实际场景三个维度详…

Cookie与Session:Web开发核心差异详解

理解 Cookie 和 Session 的区别对于 Web 开发至关重要,它们虽然经常一起使用,但扮演着不同的角色。核心区别在于: Cookie:存储在客户端(用户的浏览器)的数据片段。 Session:存储在服务器端的数据结构,用于跟踪特定用户的状态。 下面是详细的对比: 特性CookieSession…

【相干、相参】 雷电名词溯源

〇、废话因缘 最近某些国产的微波制造公司总是提到一个概念【相干】【相参】【严格相参】等等概念层出不穷&#xff0c;让人苦恼。 一、这玩意还是英文溯源吧 这几个概念都聚焦在一个单词【Coherence】&#xff1b;所以就是说两个波形之间有某种联系&#xff0c;不一定就是完全…

MYSQL练习2

一、对mydb11_stu库进行查询步骤1.创建mydb11_stu库并使用2.创建score表和student表3.向两张表插入数据student表&#xff1a;score表&#xff1a;4.完成查询&#xff08;1&#xff09;分别查询student表和score表的所有记录&#xff08;2&#xff09;查询student表的第2小到5条…

Spring Boot全局异常处理:打造坚如磐石的应用防线

引言在当今的软件开发领域&#xff0c;随着业务的日益复杂和系统规模的不断扩大&#xff0c;Spring Boot 已成为 Java 开发中备受青睐的框架。它以其强大的功能、便捷的配置和快速的开发体验&#xff0c;帮助开发者们高效地构建各种应用程序。在 Spring Boot 应用的开发过程中&…

药品挂网价、药品集采价格、药品上市价格一键查询!

相信许多人在查询药品价格时感到无从下手&#xff0c;那是因为对药品定价机制和标准的不了解&#xff0c;医院及药店的药品价格查询可通过笔者之前的文章进行了解&#xff1a;如何查询药品的价格&#xff08;医院&药店&乡镇卫生院&#xff09;&#xff1f; 而今天笔者要…