【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/7/23 9:12:50 阅读更多 →
免费解锁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/7/23 4:46:41 阅读更多 →
第七史诗智能自动化助手:彻底解放双手的终极游戏伴侣

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

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

2026/7/23 4:53:37 阅读更多 →

最新新闻

约克IWE Home3.0如何为改善型住宅提供舒适节能的一体化气候解决方案

约克IWE Home3.0如何为改善型住宅提供舒适节能的一体化气候解决方案

导语:当您考虑为150平米以上的改善型住宅或别墅配置中央空调系统时,是否常被诸多问题困扰:如何避免冷风直吹带来的“空调病”?如何在享受四季如春舒适的同时,有效控制长期能耗成本?如何选择一套能同时满足制…

2026/7/24 3:06:20 阅读更多 →
UART高级模式解析:9位地址、RS-485与DALI协议在MSPM0上的实现

UART高级模式解析:9位地址、RS-485与DALI协议在MSPM0上的实现

1. 项目概述:从基础UART到高级通信协议的跨越在嵌入式开发领域,通用异步收发传输器(UART)几乎是每个工程师的“老朋友”。它简单、直接,两根线(TX和RX)就能搞定点对点的数据交换。但当你从实验室…

2026/7/24 3:06:20 阅读更多 →
SpringBoot集成机器学习实现智能邮件分类系统

SpringBoot集成机器学习实现智能邮件分类系统

1. 项目概述:基于SpringBoot与机器学习的智能邮件管理系统在数字化办公场景中,邮件系统作为核心通信工具,每天需要处理大量往来邮件。根据第三方统计数据显示,普通企业员工平均每天接收42封工作邮件,其中约28%属于垃圾…

2026/7/24 3:06:20 阅读更多 →
Stable Diffusion进阶:从参数调整到创意驱动的AI艺术创作

Stable Diffusion进阶:从参数调整到创意驱动的AI艺术创作

1. 从工具使用者到创意驱动者的认知跃迁上周调试Stable Diffusion时突然意识到一个现象:当我输入"未来城市"时,AI给出的方案总跳不出赛博朋克的框架,直到看到同事用同样的工具生成了一组基于生物发光植物的生态都市——那一刻我才明…

2026/7/24 3:06:20 阅读更多 →
TI ADS8353/7853 ADC评估套件实战:从硬件配置到FFT性能分析全解析

TI ADS8353/7853 ADC评估套件实战:从硬件配置到FFT性能分析全解析

1. 项目概述与核心价值在嵌入式系统、工业自动化或者高精度测量领域,选型一颗合适的模数转换器(ADC)往往是项目成败的关键一步。数据手册上的参数固然重要,但纸上得来终觉浅,如何在实际电路板上验证这颗ADC的真实性能&…

2026/7/24 3:06:20 阅读更多 →
从零实现高并发C++网络库:架构设计与核心模块详解

从零实现高并发C++网络库:架构设计与核心模块详解

1. 项目概述:为什么我们需要再造一个轮子? “从零实现高并发C网络库”,这个标题听起来就充满了挑战和极客精神。在C社区里,这几乎是一个“成人礼”式的项目。你可能会问,市面上不是已经有了成熟的库吗?比如…

2026/7/24 3:05:20 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻