【Linux运维极简教程】12-性能监控与优化
12 - 性能监控与优化一、性能监控概述系统性能由四大核心资源决定CPU → 内存 → 磁盘 IO → 网络性能问题通常是某个资源成为瓶颈导致整个系统变慢。运维的目标是及时发现瓶颈并优化。性能排查思路1. 确认问题是否真的有性能问题 2. 定位瓶颈CPU内存IO网络 3. 深入分析哪个进程/线程导致 4. 解决优化调参、扩容、优化代码二、CPU 监控与优化2.1 CPU 性能指标指标说明健康值load average系统负载1/5/15 分钟平均 CPU 核心数us用户态 CPU 70%sy内核态 CPU 30%waIO 等待 20%id空闲 30%st被虚拟化偷走 5%2.2 监控工具# uptime - 快速查看负载uptime# load average: 0.50, 0.35, 0.20# 三个数分别表示 1/5/15 分钟的平均负载# top - 实时监控top# 按 1 查看每个 CPU 核心# 按 P 按 CPU 排序# vmstat - 系统整体状态vmstat15# 每秒采样共 5 次# 关键列r(运行队列), us(用户CPU), sy(系统CPU), wa(IO等待), id(空闲)# mpstat - 多核 CPU 监控需安装 sysstatmpstat-PALL1# 每秒显示所有核心# pidstat - 进程级 CPU 监控pidstat1# 每秒显示各进程 CPU 使用pidstat-p12341# 监控指定进程2.3 CPU 分析# 查看 CPU 信息lscpucat/proc/cpuinfo|grepmodel namenproc# 核心数# 查看中断分布cat/proc/interrupts# 查看进程的线程 CPU 使用top-H-pPIDps-T-pPID# 使用 perf 分析 CPU 热点高级perftop# 实时显示 CPU 热点函数perf record-g-pPID# 采样perf report# 分析报告# 使用 strace 跟踪系统调用strace-c-pPID# 统计系统调用strace-pPID# 实时跟踪2.4 CPU 优化方向# 1. 调整进程优先级nice-n-5./critical_app# 提高renice-n10-pPID# 降低# 2. 绑定 CPU 核心CPU 亲和性taskset-c0,1./app# 绑定到 0 和 1 号核心taskset-pc0,1PID# 修改运行中进程# 3. 调整 CPU 调度器# 查看当前调度策略cat/sys/block/sda/queue/scheduler# 4. 内核参数优化echoperformance/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor三、内存监控与优化3.1 内存指标# free - 内存使用概览free-h# total used free shared buff/cache available# Mem: 16G 4G 2G 0.5G 10G 11G# 重要概念# - buff/cache系统用于缓冲和缓存的内存可回收# - available实际可用内存包含可回收的缓存# - 判断内存是否紧张看 available而非 free3.2 监控工具# vmstat - 内存与交换分区vmstat15# 关键列swpd(使用swap), free(空闲), buff(缓冲), cache(缓存), si/so(swap换入换出)# si/so 持续大于 0 说明内存不足在使用 swap# sar - 历史内存数据需安装 sysstatsar-r# 内存使用sar-r15# 实时每秒sar-W# swap 使用sar-B# 分页统计# pidstat - 进程内存pidstat-r1# 每秒各进程内存使用pidstat-r-p12341# smem - 更准确的进程内存需安装smem-r-k# 按 RSS 排序smem-t-k|tail-5# 总计3.3 内存分析# 查看 /proc/meminfo最详细cat/proc/meminfo|head-20# 查看进程内存映射pmap-xPID|tail-1# 进程总内存pmap-xPID|sort-k3-rn|head# 按内存排序# 查看 slab 缓存内核内存slabtopcat/proc/slabinfo|head# 查看 swap 使用swapon-scat/proc/swaps# 查找占用内存最多的进程ps-eopid,user,%mem,rss,comm--sort-%mem|head-103.4 内存优化# 1. 调整 swappiness0-100越低越少用 swapsysctlvm.swappiness10echovm.swappiness10/etc/sysctl.conf# 2. 清理缓存谨慎使用sync# 先将脏数据写入磁盘echo1/proc/sys/vm/drop_caches# 清理 pagecacheecho2/proc/sys/vm/drop_caches# 清理 dentries 和 inodesecho3/proc/sys/vm/drop_caches# 清理所有# 3. 限制进程内存systemd# 在 service 文件中# MemoryLimit2G# MemoryMax2G# 4. 调整 overcommit 策略# vm.overcommit_memory2 严格模式不允许超额分配四、磁盘 IO 监控与优化4.1 IO 监控工具# iostat - 磁盘 IO 统计需安装 sysstatiostat-d15# 每秒显示磁盘 IOiostat-x15# 扩展统计# 关键列# %util 磁盘利用率80% 说明瓶颈# await IO 平均等待时间ms10 需关注# r/s w/s 每秒读写次数# rkB/s wkB/s 每秒读写数据量# iotop - 查看哪个进程在做 IO需安装iotop iotop-o# 只显示有 IO 的进程iotop-P# 按进程显示# pidstat - 进程级 IOpidstat-d1pidstat-d-p12341# vmstat - IO 概览vmstat15# 关键列bi(块读), bo(块写), wa(IO等待CPU百分比)4.2 IO 分析# 查看磁盘性能基准# 测试读性能hdparm-Tt/dev/sda# 使用 dd 测试注意会写入数据# 测试写速度ddif/dev/zeroof/tmp/testfilebs1Mcount1024oflagdirect# 测试读速度ddif/tmp/testfileof/dev/nullbs1Miflagdirect# 查看磁盘队列深度cat/sys/block/sda/queue/nr_requests# 查看文件系统 IO 统计cat/proc/diskstats# 使用 fio 进行专业 IO 基准测试需安装fio--nametest--filename/tmp/testfile--size1G\--rwrandread--bs4k--ioenginelibaio--iodepth32\--runtime60--time_based4.3 IO 优化# 1. 选择合适的 IO 调度器# 查看cat/sys/block/sda/queue/scheduler# 修改SSD 推荐 none/mq-deadline机械盘推荐 deadline/cfqechomq-deadline/sys/block/sda/queue/scheduler# 2. 文件系统挂载优化# /etc/fstab# noatime - 不更新访问时间# nodiratime - 不更新目录访问时间UUIDxxx /data ext4 defaults,noatime,nodiratime00# 3. 调整预读大小blockdev--getra/dev/sda# 查看预读blockdev--setra4096/dev/sda# 设置预读为 2MB# 4. ext4 优化参数# 格式化时mkfs.ext4-Oextent,dir_index-b4096/dev/sdb1# 5. 使用 SSD 替代机械盘# 6. 使用 RAID 提升性能# 7. 读写分离、冷热数据分离五、网络性能监控5.1 网络监控工具# 网卡流量ifconfigeth0# 传统ip-slinkshow eth0# 现代sar-nDEV15# 每秒网卡流量统计nethogs# 按进程显示网络流量需安装iftop# 按连接显示流量需安装nload# 简单的流量监控需安装# TCP 连接统计ss-s# 连接概览ss-tnstate ESTABLISHED|wc-lss-tnstate TIME-WAIT|wc-lnetstat-an|awk/tcp/ {print $NF}|sort|uniq-c# 网络延迟ping-c10targetmtrtarget# 综合路由与延迟# 带宽测试iperf3-s# 服务端iperf3-cserver_ip# 客户端测试iperf3-cserver_ip-u-b100M# UDP 测试iperf3-cserver_ip-R# 反向测试下载5.2 网络内核参数优化# /etc/sysctl.conf 网络优化# TCP 连接优化net.ipv4.tcp_max_syn_backlog65535# SYN 队列net.core.somaxconn65535# 监听队列net.ipv4.tcp_max_tw_buckets32768# TIME_WAIT 最大数net.ipv4.tcp_tw_reuse1# 复用 TIME_WAITnet.ipv4.tcp_fin_timeout15# FIN-WAIT-2 超时net.ipv4.tcp_keepalive_time600# keepalive 间隔# TCP 缓冲区net.core.rmem_max16777216net.core.wmem_max16777216net.ipv4.tcp_rmem40968738016777216net.ipv4.tcp_wmem40966553616777216# TCP 快速回收net.ipv4.tcp_timestamps1net.ipv4.tcp_window_scaling1# 网卡队列net.core.netdev_max_backlog65535# 连接跟踪表防火墙用net.netfilter.nf_conntrack_max655350# 应用sysctl-p六、综合监控工具6.1 sar - 系统活动报告# 安装yuminstall-ysysstat# CentOSaptinstall-ysysstat# Ubuntu# 开启数据收集CentOS# 编辑 /etc/sysconfig/sysstatENABLEDtruesystemctlenable--nowsysstat# 实时监控sar-u15# CPU 使用率sar-r15# 内存使用sar-b15# IO 传输sar-nDEV15# 网络流量sar-q15# 队列长度和负载sar-W15# swap 使用# 查看历史数据sar-u-f/var/log/sa/sa15# 查看 15 号的 CPU 数据sar-r-s10:00:00-e12:00:00# 指定时间段6.2 dstat - 综合监控需安装yuminstall-ydstat# CentOSaptinstall-ydstat# Ubuntu# 综合显示 CPU、磁盘、网络、内存dstat# 自定义显示dstat-cdnymdstat --top-cpu --top-mem --top-io6.3 监控系统部署建议工具类型特点Prometheus Grafana时序数据库可视化业界标准功能强大Zabbix一体化监控企业级开箱即用Node Exporter系统指标采集配合 PrometheusNetdata实时监控安装简单实时性好七、性能优化总结7.1 常见性能问题与解决症状可能原因排查工具优化方向系统负载高CPU 或 IO 瓶颈top, vmstat优化代码/升级硬件CPU us 高计算密集top, pidstat优化算法/加节点CPU sy 高系统调用过多strace, perf减少系统调用CPU wa 高IO 等待iostat, iotop优化 IO/换 SSD内存不足内存泄漏/缓存少free, pmap修复泄漏/加内存swap 频繁物理内存不足vmstat, sar加内存/调 swappiness磁盘 %util 高IO 瓶颈iostat换 SSD/RAID/分散 IO网络延迟高带宽/路由问题mtr, iperf3升级带宽/优化路由大量 TIME_WAIT连接回收慢ss调内核参数服务响应慢综合因素全链路分析逐层排查7.2 综合性能监控脚本#!/bin/bash# perf_monitor.sh - 性能监控告警脚本# 阈值设置CPU_THRESHOLD80MEM_THRESHOLD85DISK_THRESHOLD90LOAD_THRESHOLD$(nproc)ALERT_LOG/var/log/perf_alert.logalert(){echo[$(date%Y-%m-%d %H:%M:%S)] [ALERT]$1$ALERT_LOGecho$1}# CPU 使用率CPU_IDLE$(top-b-n1|grepCpu(s)|awk{print $8}|cut-d%-f1)CPU_USED$(echo100 -$CPU_IDLE|bc2/dev/null|cut-d.-f1)if[$CPU_USED-gt$CPU_THRESHOLD];thenalertCPU 使用率过高:${CPU_USED}%fi# 内存使用率MEM_USED$(free|awk/Mem/ {printf %.0f, $3/$2*100})if[$MEM_USED-gt$MEM_THRESHOLD];thenalert内存使用率过高:${MEM_USED}%fi# 磁盘使用率df-h|awkNR1 $5 ! - {gsub(/%/,,$5); if($5 $DISK_THRESHOLD) print $5% $6}|whilereadline;doalert磁盘空间不足:$linedone# 系统负载LOAD_1$(uptime|awk-Fload average:{print $2}|awk{print $1}|tr-d,)if[$(echo$LOAD_1$LOAD_THRESHOLD|bc2/dev/null)1];thenalert系统负载过高:$LOAD_1(阈值:$LOAD_THRESHOLD)fi# IO 等待IO_WAIT$(vmstat12|tail-1|awk{print $16})if[$IO_WAIT-gt20];thenalertIO 等待过高:${IO_WAIT}%fiecho[$(date%Y-%m-%d %H:%M:%S)] 监控检查完成7.3 优化原则先监控后优化用数据说话不凭感觉找准瓶颈一次只优化一个资源测试验证优化后要对比效果适度即可不要过度优化满足需求即可硬件 vs 软件先优化软件和配置再考虑升级硬件可扩展性优先通过水平扩展解决而非单机优化八、全系列总结至此《Linux 运维教程》全 12 篇已全部完成。回顾整个系列篇号主题核心技能01基础命令文件操作、文本处理、系统信息02文件系统与权限目录结构、权限管理、ACL、链接03用户与组管理用户增删改查、sudo、PAM04进程与服务管理进程控制、systemd、资源限制05软件包管理yum/dnf、apt、源码编译06网络配置IP 配置、网络诊断、内核参数07磁盘管理分区、文件系统、LVM08Shell 脚本变量、条件、循环、函数、实战脚本09定时任务cron、Ansible、自动化运维10日志与排查journalctl、日志分析、故障排查11防火墙与安全firewalld、iptables、SELinux、SSH 加固12性能监控CPU/内存/IO/网络监控与优化掌握这些内容你已经具备了 Linux 运维工程师的核心技能。运维是一个需要不断实践和积累经验的领域建议在实际工作中多动手、多总结。上一篇11 - 防火墙与安全加固返回目录README - 教程目录

相关新闻

亚洲EMBA怎么选?2026民企老板择校性价比实测榜单

亚洲EMBA怎么选?2026民企老板择校性价比实测榜单

【客观测评声明】本文为独立财经测评内容,无硬性品牌营销导向,基于2026年亚洲主流EMBA项目公开数据,从民企实业经营视角,客观拆解各项目适配度、优势与短板,为企业创始人、高管提供理性择校参考,规避择校踩…

2026/10/21 14:23:43 阅读更多 →
免费解锁Wand游戏修改器高级功能的完整开源解决方案

免费解锁Wand游戏修改器高级功能的完整开源解决方案

免费解锁Wand游戏修改器高级功能的完整开源解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand(原WeMod)的…

2026/10/22 10:37:51 阅读更多 →
第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣

第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣

第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺&a…

2026/10/20 16:38:29 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →