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

Linux内存监控工具与实战技巧

1. Linux 内存监控概述作为一名运维工程师我每天都要和服务器内存打交道。内存就像系统的血液一旦出现异常整个系统就会变得迟缓甚至崩溃。在Linux系统中我们可以通过多种方式来监控内存使用情况每种方法都有其独特的视角和适用场景。记得有一次我们的生产服务器突然出现性能下降通过综合使用这些工具我们快速定位到是一个Java进程发生了内存泄漏。下面我就把这些年在实际工作中总结的内存监控方法分享给大家希望能帮助你在遇到内存问题时快速找到症结所在。2. 基础命令行工具2.1 /proc/meminfo内存信息的源头/proc/meminfo 是Linux内存信息的源头活水几乎所有其他工具都是基于这个虚拟文件提供的数据。这个文件包含了系统内存使用情况的详细信息cat /proc/meminfo输出会包含以下关键指标MemTotal系统总内存MemFree空闲内存Buffers用作缓冲区的内存Cached用作缓存的内存SwapCached交换缓存提示/proc/meminfo 中的数据是动态更新的每次读取都会获取最新的内存状态。2.2 free命令快速概览free命令是对/proc/meminfo信息的精简展示特别适合快速查看内存使用概况free -h-h参数表示以人类可读的格式显示自动转换为GB/MB。输出包含三行第一行物理内存使用情况第二行交换空间使用情况第三行包含缓冲区和缓存的内存使用情况注意看内存是否紧张时不要只看MemFree还要关注-/ buffers/cache行的free值因为Linux会充分利用内存做缓存。2.3 vmstat系统整体状态vmstat可以提供更全面的系统状态视图包括内存、交换、IO和CPUvmstat -s关键内存指标total memory总内存used memory已使用内存active memory活跃内存inactive memory非活跃内存swap used已用交换空间3. 进程级内存分析工具3.1 top/htop实时进程监控top是最基础的进程监控工具可以实时查看各进程的内存占用top在top界面中按M可以按内存使用排序。关键内存相关列%MEM进程占用物理内存百分比VIRT虚拟内存使用量RES常驻内存使用量SHR共享内存大小htop是top的增强版界面更友好htophtop的优势彩色显示不同类型信息一目了然支持鼠标操作可以树状展示进程关系支持直接杀死进程3.2 ps命令灵活查询ps命令可以灵活地查询进程内存信息特别适合脚本中使用ps aux --sort-rss常用内存相关选项--sort-rss按常驻内存降序排序-o pid,rss,cmd自定义输出列-e显示所有进程3.3 smem高级统计smem提供了更高级的内存统计功能可以按用户或进程分组统计sudo smem -usmem的特色功能PSSProportional Set Size更准确的内存占用计算方式可以生成饼图或柱状图支持按用户、进程等维度统计4. 图形化工具4.1 GNOME System Monitor对于桌面用户GNOME System Monitor提供了直观的图形界面gnome-system-monitor主要功能实时内存使用曲线图进程列表及内存占用资源使用历史记录友好的终止进程界面4.2 KDE System MonitorKDE桌面环境下的系统监控工具ksysguard功能与GNOME版本类似但提供了更多自定义选项和插件支持。5. 高级监控工具5.1 atop全面系统监控atop是一个强大的终端监控工具可以记录历史数据sudo atop特点彩色编码显示资源使用情况记录历史数据供后续分析显示磁盘、网络等综合信息可以配置告警阈值5.2 nmon交互式监控nmon是一个交互式的系统监控工具特别适合性能测试nmon使用技巧按m键显示内存信息按c键显示CPU信息按d键显示磁盘信息数据可以导出为CSV格式5.3 memstat库内存分析memstat可以分析进程使用的共享库内存情况memstat -p PID输出包含可执行文件内存占用数据段内存占用共享库内存占用详细的内存映射信息6. 实际应用场景6.1 内存泄漏排查当怀疑有内存泄漏时可以这样排查使用top或htop观察内存增长趋势用ps aux --sort-rss找出内存占用最高的进程通过memstat分析该进程的内存使用详情结合/proc/ /smaps查看详细内存映射6.2 性能优化优化系统内存使用时用vmstat -s查看系统整体内存压力用free -h观察缓存使用情况用smem找出内存占用大户用atop记录优化前后的对比数据6.3 容量规划进行容量规划时使用nmon记录长时间的内存使用模式分析峰值内存需求考虑缓存效率预留足够的交换空间7. 实用技巧与注意事项理解内存指标VIRT虚拟内存大小包含共享库等RES实际使用的物理内存SHR共享内存大小%MEMRES占总内存的百分比缓存不是问题 Linux会充分利用空闲内存做磁盘缓存这是正常现象。只有当free内存接近0且swap使用开始增长时才需要关注。OOM Killer 当系统内存严重不足时OOM Killer会杀死占用内存最多的进程。可以通过dmesg查看相关日志。交换空间监控 要特别关注swap使用情况频繁的swap交换会严重影响性能。容器环境 在容器环境中传统工具显示的内存信息可能不准确需要使用docker stats等容器专用工具。长期监控 对于生产环境建议配置PrometheusGrafana等长期监控方案而不是依赖临时命令。脚本化监控 可以将常用命令封装成脚本定期运行并记录结果便于趋势分析。内存溢出检测 对于Java等应用要配合jstat等语言特定工具检测堆内存使用情况。在实际工作中我通常会根据具体情况组合使用这些工具。比如先用free快速查看整体情况再用htop找出问题进程最后用memstat或/proc/ /smaps深入分析特定进程的内存使用模式。记住没有放之四海而皆准的最佳工具灵活运用才是关键。

相关文章:

Linux内存监控工具与实战技巧

1. Linux 内存监控概述作为一名运维工程师,我每天都要和服务器内存打交道。内存就像系统的血液,一旦出现异常,整个系统就会变得迟缓甚至崩溃。在Linux系统中,我们可以通过多种方式来监控内存使用情况,每种方法都有其独…...

OpenClaw调试技巧:捕获Qwen3.5-9B错误推理的5个方法

OpenClaw调试技巧:捕获Qwen3.5-9B错误推理的5个方法 1. 为什么需要关注模型推理错误 上周我让OpenClaw自动整理项目文档时,发现它把"API响应时间优化方案"归类到了"前端样式规范"目录。这个看似简单的错误背后,是Qwen3…...

AD09实战:3分钟搞定BOM表导出与自动化分类(附模板下载)

AD09实战:3分钟高效生成智能分类BOM表的完整指南 在电子设计领域,BOM表(物料清单)是连接设计与生产的核心纽带。传统手工整理BOM表不仅耗时费力,还容易因人为疏忽导致元器件分类错误、数量统计偏差等问题。AD09作为业界…...

【C】static

static1、修饰局部变量:使其变为静态变量,这个局部变量在函数执行完成后不会被释放,而是继续保留在内存里。2、修饰全局变量:使其只在本文件内部有效,在其他文件不可用。3、修饰函数:使函数只能在本文件中使…...

Pix4D安装与激活全攻略:从卸载到成功运行的详细指南

1. 彻底卸载旧版本:不留任何残余 很多人在安装Pix4D时遇到问题,往往是因为旧版本没有卸载干净。我见过太多案例,就是因为残留的注册表项导致新版本无法正常激活。这里分享一个我用了多年的"深度清洁法"。 首先打开控制面板&#xf…...

解决鸿蒙方向的Flutter框架版切换问题-当前最新版本3.35.8——工具切换与命令切换

欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 最新版本的仓库地址: https://gitcode.com/openharmony-tpc/flutter_flutter/tree/oh-3.35.7-release 本地版本非最新版本 我当前的版本是3.27.5。 需要更新到最新的。 升…...

大模型训练实战:分布式训练、显存优化与知识蒸馏全解析!

全景路线图: 我们将按模块逐步展开,每个模块都是最终搭建完整平台的一块拼图:之前的章节参考我之前写的文章;G. 分布式训练篇:大模型训练的工程实践 – 学习在多卡多机环境下训练大模型的方法,包括数据并行…...

性能分析定界(OpenHarmony平台)指南

性能分析定界指南 前置条件 OpenHarmony Next系统前台运行Flutter页面分析工具 DevEco Studio Profiler SmartPerf Flutter线程介绍 Flutter 使用多个线程来完成其必要的工作,图层中仅展示了其中两个线程。你写的所有 Dart 代码都在 UI 线程上运行。尽管你没有直…...

Kuikly动态化跨端框架的多维特性与选型实践

Kuikly,是指基于Kotlin MultiPlatform(KMP)构建的跨端开发框架,利用KMP的逻辑跨平台能力,抽象通用跨平台UI渲染接口,复用平台UI组件,实现UI跨平台,具备轻量、高性能、可动态化优势;其核心特点是…...

STM32启动流程解析与嵌入式开发实践

1. STM32启动流程深度解析作为一名嵌入式开发者,我经常需要深入理解MCU的启动机制。今天我想分享STM32启动流程的详细分析,这是每个嵌入式工程师都应该掌握的核心知识。STM32的启动过程看似简单,实则包含了许多精妙的设计。理解这个过程不仅能…...

企业级AI Agent Harness工程落地的5个核心步骤与关键里程碑

企业级AI Agent Harness工程落地的5个核心步骤与关键里程碑 开篇:从「大模型玩具」到「生产级生产力工具」的鸿沟 各位技术同仁、架构师、企业数字化负责人,下午好!欢迎来到我的「AI工程化落地指南」专栏——这是我们的第17篇原创深度文章。 过去18个月里,我作为全球TOP3…...

新能源汽车,车载充电机仿真模型(基于PWM整流器)。输出功率3.3kw,前级PFC采用双闭环控制,电流畸变率小。后级采用移相全桥开环控制。 运行环境有matlab_simulink和plecs

新能源汽车,车载充电机仿真模型(基于PWM整流器)。输出功率3.3kw,前级PFC采用双闭环控制,电流畸变率小。后级采用移相全桥开环控制。 运行环境有matlab/simulink和plecs针对新能源汽车车载充电机(OBC&#x…...

告别熬夜!揭秘CSDNer私藏的PPT生成神器

一、PPT 制作之痛:传统与现状在日常的工作与学习中,PPT(PowerPoint)演示文稿已然成为信息展示和沟通的重要工具。无论是商务汇报、学术演讲,还是课堂教学,一份制作精良的 PPT 都能极大地提升信息传递的效果…...

基于dlib+OpenCV的人脸疲劳检测 + 年龄性别识别实战

一、前言在计算机视觉领域,人脸相关技术一直是热门方向,从人脸检测、关键点定位到疲劳检测、年龄性别识别,都有着广泛的应用场景,比如驾驶员疲劳监测、智能门禁、人机交互等。本文将基于dlib和OpenCV,从零实现两个经典…...

OpenClaw对话日志分析:千问3.5-35B-A3B-FP8任务执行效率提升技巧

OpenClaw对话日志分析:千问3.5-35B-A3B-FP8任务执行效率提升技巧 1. 从8分钟到3分钟的优化之旅 上个月,当我第一次用OpenClaw对接千问3.5-35B-A3B-FP8模型执行自动化任务时,一个简单的"资料收集摘要生成"流程平均需要8分钟才能完…...

基于S7-200 PLC和组态王矿井通风控制

基于S7-200 PLC和组态王矿井通风控制矿井通风系统的自动化控制对安全生产太重要了。老张上次下井巡检时说:"现在这通风系统比二十年前强多了,以前手动调风门得拿命赌操作工的手速。"今天咱们就聊聊怎么用S7-200 PLC和组态王搞矿井通风控制&…...

RAG大模型“外挂“揭秘:3步解锁私有数据问答,秒变“开卷学霸“!

什么是 RAG?一文搞懂大模型时代最火技术 🎯 当AI遇到"失忆症":RAG来拯救 相信用过 ChatGPT 的朋友都遇到过这种尴尬: 你问它最新新闻,它回答"我的知识截止到2023年"你问公司内部政策,它…...

ai辅助开发:让快马智能生成win11安装openclaw的交互式诊断助手

最近在折腾Win11系统上安装OpenClaw这个工具时,发现手动安装过程特别容易踩坑。从依赖版本冲突到权限问题,稍不注意就会卡住。后来尝试用InsCode(快马)平台的AI辅助功能,意外发现它能生成一个智能安装助手,把整个流程变得特别顺畅…...

如何在 Laravel Eloquent 中准确检测两个日期时间范围是否重叠

本文详解 laravel 中判断预约时间区间是否重叠的正确逻辑与实现,纠正常见边界条件误判问题,提供简洁可靠的数据库查询方案及完整代码示例。 本文详解 laravel 中判断预约时间区间是否重叠的正确逻辑与实现,纠正常见边界条件误判问题&…...

Docker TLS 证书一键生成脚本(安全加密远程访问)

Docker TLS 证书一键生成脚本(安全加密远程访问) 这是一键自动生成 Docker TLS 加密证书的 Shell 脚本,无需手动输入复杂命令,自动生成 CA 证书、服务端证书、客户端证书,配置好权限,直接复制就能用&#x…...

ESXi 8.0U3I 硬盘直通(PCIe/RDM)完全解决方案:从原理、配置到故障排错全攻略

在 ESXi 8.0U3I 环境中,硬盘直通(含 PCIe 控制器直通 与 RDM 裸设备映射)是实现虚拟机直接访问物理硬盘、最大化存储性能与兼容性的核心技术,但 8.0U3I 对消费级硬件、SATA/NVMe 控制器、驱动签名的管控更严格,极易出现无法开启直通、直通后硬…...

2026.4.7总结

工作日精进:这个月在心声上看到许多离职的帖子,估计是有很多拿完年终奖离职的。看到别人写的离职感悟,我多少有些共情。当有一天,我离职的时候,我也要写一篇长篇大论。早上HR跟入职一两年的人解读了esop相关政策。这政…...

VCF 部署不踩坑!ESXi 主机 SSL 指纹怎么拿、怎么用?一文简单了解

在部署 VMware Cloud Foundation(VCF)9.0 时,很多人会卡在 “ESXi 主机指纹验证” 这一步 —— 自动部署时 JSON 文件缺了它会失败,手动确认又怕输错。其实这就是主机的 “安全身份证”,用来验证连接的真实性。本文用通俗的语言解释 SSL 指纹…...

PyTorch3D在Windows上安装总报错?试试这个绕过源码编译的Pip直装方案(适配PyTorch 2.0.1 + CUDA 11.7)

PyTorch3D在Windows上安装总报错?试试这个绕过源码编译的Pip直装方案(适配PyTorch 2.0.1 CUDA 11.7) 如果你是一名在Windows平台上进行3D视觉研究的开发者,想必对PyTorch3D这个强大的3D深度学习库并不陌生。然而,官方…...

MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型

MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型 1. 为什么选择OpenClawPhi-3组合 去年第一次听说AI能直接操作我的电脑时,我本能地感到不安——让一个云端模型控制本地文件系统?这听起来就像把家门钥匙交给陌生人。直到发…...

STM32堆栈原理与内存管理实践指南

1. 堆栈基础概念解析在嵌入式系统开发中,堆栈(Stack)是最基础也是最重要的内存管理机制之一。简单来说,堆栈就是一块特殊组织方式的内存区域,采用"后进先出"(LIFO)的原则进行数据存取。理解堆栈的工作原理对于STM32开发至关重要&am…...

基于粒子群算法的IEEE33节点配电网无功优化及其结果分析

基于粒子群算法的配电网无功优化 基于IEEE33节点配电网,以无功补偿器的接入位置和容量作为优化变量,以牛拉法进行潮流计算,以配电网网损最小为优化目标,通过优化求解,得到最佳接入位置和容量,优化结果如下所…...

恒压供水系统:维纶通屏与S7 - 200程序的奇妙组合

恒压供水,维纶通屏+s7 200程序在自动化控制领域,恒压供水系统一直是一个经典应用。今天咱就来唠唠如何用维纶通屏搭配S7 - 200程序实现恒压供水。 一、恒压供水原理简介 恒压供水简单来说,就是不管用水量怎么变化,都能…...

OpenAI 把 Codex 接进 Claude Code,这件事比你想的更“工程化”

目录这次到底发生了什么为什么说这是一次“反常识”的动作插件能力拆解:三个命令背后的工程价值Claude Code Codex 的真实工作流长什么样技术实现拆解:它到底怎么接进去的对开发者意味着什么变化一些容易被忽略的坑一、这次到底发生了什么最近一个比较有…...

新手入门指南:基于快马平台构建静电地板施工交互学习系统

作为一名刚接触机房建设的新手,第一次看到"静电地板施工"这个词时,整个人都是懵的。直到我在InsCode(快马)平台上尝试做了一个交互式学习系统,才发现原来掌握这项技能可以这么简单。下面分享下我的学习心得和系统构建过程。 为什么…...