在CentOS 7上查看和管理内存使用情况

在Linux系统中,内存管理是一个至关重要的方面,尤其在生产环境中,了解系统内存的使用情况可以帮助管理员优化系统性能,检测内存泄漏,合理分配资源,从而确保系统的稳定运行。本文将详细介绍在CentOS 7系统中如何使用常见的内存监控工具,如freetopps等,并深入探讨这些工具的各种参数和用法,以便读者能够全面掌握系统内存的监控与管理。

free 命令详解

基本用法

free命令是Linux系统中最常用的查看内存使用情况的命令之一,它能够显示系统中的物理内存和交换内存的使用情况。其基本语法如下:

free [选项]

常用选项

  • -b:以字节为单位显示内存使用情况。
  • -k:以KB为单位显示内存使用情况(默认选项)。
  • -m:以MB为单位显示内存使用情况。
  • -g:以GB为单位显示内存使用情况。
  • -t:在输出的最后一行显示总内存使用情况。
  • -s <间隔时间>:周期性地显示内存使用情况,间隔时间为指定的秒数。
  • -c <次数>:指定周期性显示内存使用情况的次数。
  • -h:以人类可读的方式显示内存使用情况,例如,将数字转换为易于理解的单位(GB、MB、KB等)。

示例

以下是一些使用free命令的示例:

1. 以人类可读的方式显示内存使用情况
[root@VM-16-3-centos ~]# free -htotal        used        free      shared  buff/cache   available
Mem:           2.0G        1.6G         85M        776K        305M        238M
Swap:            0B          0B          0B
2. 显示总内存使用情况
[root@VM-16-3-centos ~]# free -httotal        used        free      shared  buff/cache   available
Mem:           2.0G        1.6G         86M        776K        305M        239M
Swap:            0B          0B          0B
Total:         2.0G        1.6G         86M

输出解释

  • total:总物理内存
  • used:已经使用的内存
  • free:没有使用的内存
  • shared:多进程共享内存
  • buff/cache:读写缓存内存
  • available:应用程序可用的物理内存

这些信息能够帮助我们快速了解系统当前的内存使用情况,评估内存的分配和使用效率。

top 命令详解

top命令是Linux系统中另一个非常强大的工具,用于实时监控系统的资源使用情况,包括CPU、内存、交换分区的使用情况,以及各个进程的详细信息。

基本用法

top [选项]

常用选项

  • -d seconds:设置top命令的刷新间隔时间,默认为3秒。
  • -u username:只显示指定用户名的进程信息。
  • -p pid:只显示指定进程ID的信息。
  • -n iterations:设置top命令的循环次数,即显示的次数。
  • -s field:按指定字段对进程进行排序,默认按CPU使用率排序。可选字段包括pid、user、pr、ni、virt、res、shr、s、%cpu、%mem、time+、time、command。
  • -o field:按指定字段对进程进行排序,与-s参数不同的是,-o参数可同时指定多个字段进行排序。
  • -c:显示完整的命令行信息。

示例

以下是一些使用top命令的示例:

1. 默认显示系统资源使用情况
[root@VM-16-3-centos ~]# top
top - 15:47:19 up 164 days,  6:58,  1 user,  load average: 0.21, 0.20, 0.13
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.3 us,  0.5 sy,  0.0 ni, 97.5 id,  0.7 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2046684 total,    95396 free,  1648520 used,   302768 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   241956 avail Mem
2. 显示完整的命令行信息
[root@VM-16-3-centos ~]# top -c
top - 15:47:56 up 164 days,  6:59,  1 user,  load average: 0.11, 0.17, 0.13
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  0.7 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2046684 total,    94868 free,  1648668 used,   303148 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   241808 avail Mem

输出解释

  • USER:进程所有者的用户名
  • PID:进程ID
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用内存的百分比
  • VSZ:进程占用的虚拟内存大小,单位为KB
  • RSS:进程占用的实际物理内存大小,单位为KB
  • TTY:进程所在的终端
  • STAT:进程状态,包括R(运行)、S(睡眠)、T(停止)、Z(僵尸进程)等
  • START:进程启动的时间
  • TIME:进程占用CPU的时间
  • COMMAND:进程命令

通过这些信息,我们可以详细了解每个进程的资源使用情况,从而找出占用资源较多的进程,进行优化或处理。

ps 命令详解

ps命令用于显示当前系统的进程状态。它提供了比top命令更为灵活的进程显示和过滤功能。

基本用法

ps [选项]

常用选项

  • a:显示所有进程,包括其他用户的进程。
  • u:以用户为主要输出格式,包括进程用户、进程ID、CPU使用率、内存占用等。
  • x:显示没有控制终端的进程。
  • -e:显示所有进程。
  • -f:显示完整格式的进程信息。
  • -o format:自定义输出格式。
  • --sort:按照指定字段排序。

示例

1. 按内存使用排序显示前5个进程
[root@VM-16-3-centos ~]# ps aux --sort=-rss | head -n 5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql     1180  0.0 13.8 1612496 283868 ?      Sl    2023 155:13 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      3997  0.0 13.4 2691696 275900 ?      Sl    2023 191:01 java -jar dbd-1.0.0-SNAPSHOT.jar
root      4457  0.0 13.3 2698236 273284 ?      Sl    2023 227:17 java -jar lim-0.0.1-SNAPSHOT.jar
root      7843  0.1 12.7 2705412 261332 ?      Sl   Apr09   5:26 java-jar station-0.0.1-SNAPSHOT.jar

输出解释

  • USER:进程所有者的用户名
  • PID:进程ID
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用内存的百分比
  • VSZ:进程占用的虚拟内存大小,单位为KB
  • RSS:进程占用的实际物理内存大小,单位为KB
  • TTY:进程所在的终端
  • STAT:进程状态
  • START:进程启动的时间
  • TIME:进程占用CPU的时间
  • COMMAND:进程命令

通过ps命令,我们可以灵活地显示和过滤系统中的进程信息,根据需要进行排序和筛选,从而更好地管理和优化系统资源。

进阶:系统内存分析与优化

在了解了基本的内存查看工具后,我们可以进一步进行系统内存的分析与优化。以下是一些高级技巧和方法。

使用 vmstat 进行系统性能监控

vmstat命令提供了有关系统整体性能的详细统计信息,包括内存、CPU、进程和I/O的详细情况。它的基本语法如下:

vmstat [选项] [间隔] [次数]

示例

1. 每2秒刷新一次,显示5次
[root@VM-16-3-centos ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st0  0      0  95396 302768 1035752    0    0     1     2    1    1  1  1 98  0  00  0      0  95396 302768 1035752    0    0     0     0  101  198  0  0 100  0  00  0      0  95396 302768 1035752    0    0     0     0  109  215  0  0 100  0  00  0      0  95396 302768 1035752    0    0     0     0   94  170  0  0 100  0  00  0      0  95396 302768 1035752    0    0     0     0  106  188  0  0 100  0  0

输出解释

  • procs:进程信息,包括等待运行的进程数(r)和在非中断睡眠状态的进程数(b)。
  • memory:内存信息,包括已交换出的内存(swpd)、空闲内存(free)、缓冲内存(buff)、缓存内存(cache)。
  • swap:交换分区信息,包括从交换区读取的内存(si)和写入交换区的内存(so)。
  • io:I/O信息,包括从块设备接收的块数(bi)和发送到块设备的块数(bo)。
  • system:系统信息,包括每秒中断次数(in)和每秒上下文切换次数(cs)。
  • cpu:CPU信息,包括用户时间(us)、系统时间(sy)、空闲时间(id)、等待I/O时间(wa)、虚拟机时间(st)。

通过vmstat命令,我们可以全面监控系统的运行状态,及时发现和处理性能瓶颈。

内存优化技巧

  1. 减少缓存压力:在服务器上运行大型应用程序时,缓存可能会占用大量内存。可以通过调整内核参数来优化缓存使用,例如减少dirty_ratio参数:

    sysctl -w vm.dirty_ratio=10
    
  2. 释放缓存:可以通过以下命令手动释放内存中的缓存:

    echo 3 > /proc/sys/vm/drop_caches
    
  3. 监控并优化应用程序:使用pstop等命令找出内存使用率高的进程,对应用程序进行优化,释放不必要的资源。

  4. 合理配置交换空间:确保交换空间的大小合适,以便在物理内存不足时,系统能够正常运行。

  5. 调整OOM Killer策略:在内存紧张时,OOM Killer会终止一些进程。可以通过调整oom_score_adjoom_score_adj_min等参数来改变OOM Killer的行为。

内存泄漏检测

内存泄漏是指程序在运行过程中动态分配内存而没有及时释放,导致内存使用量逐渐增加,最终可能耗尽系统内存。以下是一些检测和处理内存泄漏的方法:

  1. 使用Valgrind工具:Valgrind是一个强大的内存检测工具,可以检测出程序中的内存泄漏问题。

    valgrind --leak-check=yes ./your_program
    
  2. 使用GDB调试:通过GDB调试程序,查看内存分配和释放情况,找出未释放的内存。

    gdb ./your_program
    (gdb) run
    
  3. 日志分析:检查应用程序的日志文件,查看是否有内存泄漏的相关错误信息。

  4. 定期重启服务:对于一些长时间运行的服务,可以定期重启服务,以释放可能存在的内存泄漏。

总结

本文详细介绍了在CentOS 7系统中使用freetopps等命令查看和管理内存使用情况的方法,以及如何进行系统内存分析与优化。通过这些工具和技巧,系统管理员可以更好地了解和管理系统的内存资源,确保系统的稳定运行。希望本文对您有所帮助,让您在内存管理方面更加得心应手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848538.shtml

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

相关文章

每天一个数据分析题(三百五十一)-树状体系图

杜邦树状分析体系是将总指标根据指标关系拆解成各细分指标&#xff0c;从上到下依次排列形成树状结构。杜邦树状体系图的作用包括&#xff1f; A. 原因追踪 B. 进度管理 C. 预估影响 D. 鸟瞰全局 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此…

二、线性回归模型

目录 一、线性回归 1.模型示例 2.代码实验&#xff08;C1_W1_Lab03_Model_Representation&#xff09; (1).工具使用 (2).问题描述-房价预测 (3).输入数据 (4).绘制数据集坐标点 (5).建模构造函数 二、代价函数&#xff08;Cost function&#xff09; 1.解释一下概念…

mysql用户管理知识点

1、权限表 1.1、user表 1.1.1、用户列 Host、User、Password分别表示主机名、用户名、密码 1.1.2、权限列 决定了用户的权限&#xff0c;描述了在全局范围内允许对数据和数据库进行操作。 1.1.3、安全列 安全列有6个字段&#xff0c;其中两个是ssl相关的&#xff0c;2个是x509相…

敦煌网、ebay、速卖通等平台一直被差评怎么办?

在电商行业里一直都有一句话&#xff0c;有评行走天下&#xff0c;无评寸步难行 而没有review打造爆款的案例是少之甚少&#xff0c;众所周知&#xff0c;review已经成为用户衡量一件商品的标尺&#xff0c;目前我也是看到一个文章上面写到&#xff0c;一个卖家表示自己平时运…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景&#xff1a; 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】&#xff1a; 形如SyntaxError: EOL while scanning string literal&#xff0c;以红色波浪线形式在Pycharm下出现 过程&#xff1a; 问题概述&#xff1a; 简单…

计算机视觉与深度学习实战,Python为工具,基于光流场的车流量计数应用

一、引言 随着科技的飞速发展,计算机视觉和深度学习技术在现代社会中的应用越来越广泛。其中,车流量计数作为智能交通系统的重要组成部分,对于城市交通管理和规划具有重要意义。本文旨在探讨以Python为工具,基于光流场的车流量计数应用,为智能交通系统的发展提供技术支撑。…

数据结构与算法-15_ B 树

文章目录 1.概述2.实现定义节点多路查找插入 key 和 child定义树插入分裂删除代码 1.概述 B树&#xff08;B-Tree&#xff09;结构是一种高效存储和查询数据的方法。B树主要思想是将每个节点扩展成多个子节点&#xff0c;以减少查找所需的次数。B树结构非常适合应用于磁盘等大…

golang结构与接口方法实现与交互使用示例

1.定义结构 // 结构定义 type VideoFrame struct {id inthead []bytelen int64data []byte } 2.实现结构方法 // 生成结构字段的get与set方法 // func (v *VideoFrame) Id() int {return v.id }func (v *VideoFrame) SetId(id int) {v.id id }func (v *VideoFrame) He…

React中使用 ts 后,craco库配置别名时需要注意什么?

文章目录 前言编译报错如下解决方式总结 前言 我们都知道craco库可以用来覆盖react配置&#xff0c;如设置别名等。但是在项目使用 Typescript 后&#xff0c;我们需要额外配置&#xff0c;否则会造成编译报错。 详细craco配置可以查看之前文章&#xff1a; 项目初始化与配置…

JDBC是什么?它如何工作?

一、JDBC概述 JDBC&#xff08;Java Database Connectivity&#xff09;是Java语言与数据库之间进行交互的API。它允许Java程序通过SQL&#xff08;结构化查询语言&#xff09;来执行各种数据库操作&#xff0c;如查询、更新、删除等。JDBC是Java应用程序访问数据库的标准方式…

探索 LLM 预训练的挑战,GPU 集群架构实战

万卡 GPU 集群实战&#xff1a;探索 LLM 预训练的挑战 一、背景 在过往的文章中&#xff0c;我们详细阐述了LLM预训练的数据集、清洗流程、索引格式&#xff0c;以及微调、推理和RAG技术&#xff0c;并介绍了GPU及万卡集群的构建。然而&#xff0c;LLM预训练的具体细节尚待进一…

Vue06-el与data的两种写法

一、el属性 用来指示vue编译器从什么地方开始解析 vue的语法&#xff0c;可以说是一个占位符。 1-1、写法一 1-2、写法二 当不使用el属性的时候&#xff1a; 两种写法都可以。 v.$mount(#root);写法的好处&#xff1a;比较灵活&#xff1a; 二、data的两种写法 2-1、对象式…

【java深拷贝和浅拷贝区别是什么?】

文章目录 Java深拷贝和浅拷贝的区别&#xff08;1&#xff09;浅拷贝&#xff08;Shallow Copy&#xff09;&#xff08;2&#xff09;深拷贝&#xff08;Deep Copy&#xff09; 总结 Java深拷贝和浅拷贝的区别 在Java中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09;和…

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法

【面试干货】SQL中count&#xff08;*&#xff09;、count&#xff08;1&#xff09;和count&#xff08;column&#xff09;的区别与用法 1、count(*)2、count(1)3、count(column) &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在SQL中&a…

Oracle作业调度器Job Scheduler

Oracle数据库调度器 (Oracle Database Scheduler) 在数据库管理系统中&#xff0c;数据库调度器负责调度和执行数据库中的存储过程、触发器、事件等。它可以确保这些操作在正确的时间和条件下得到执行&#xff0c;以满足业务需求。 1、授权用户权限 -- 创建目录对象 tmp_dir…

5.4.18 加载某三方模块使用内核 panic 问题分析

环境信息 内核版本&#xff1a;5.4.18 cpu 架构&#xff1a;arm64 问题描述 加载了产品的某三方 ko 文件使用过程中&#xff0c;会触发如下 panic 信息&#xff1a; [ 218.133479][ 0] Unable to handle kernel NULL pointer dereference at virtual address 0000000000…

CSS函数:fit-content与matrix的使用

网格函数 fit-content()属于网格函数&#xff0c;除此之外的网格函数还有&#xff1a;CSS函数&#xff1a; 实现数据限阈的数字函数。顾名思义&#xff0c;这三个函数只能在网格布局中使用。fit-content()函数主要是用于给定布局可用大小&#xff0c;适应内容&#xff0c;其功…

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性&#xff08;atomicity&#xff09;2_一致性&#xff08;consistency&#xff09;3_持久性&#xff08;durability&#xff09;4_隔离性&#xff08;isolation&#xff09; 3.事务并发引发的问题1_脏读2_不可重…

基于小波域优化Savitzky–Golay滤波器的脑电图信号的运动伪影去除方法(MATLAB R2018A)

在获取或采集数据的过程中&#xff0c;不可避免地将噪声引入到数据中&#xff0c;噪声的存在使得原始数据发生变异&#xff0c;对数据的处理及分析产生严重地影响。常用的去噪模型有平滑去噪、均值去噪。其中&#xff0c;平滑去噪又包括移动平均平滑法和Savitzky-Golay卷积平滑…