linux运维(二)内存占用分析

news2024/12/23 8:37:49

一、centos内存高,查看占用内存, top命令详解

1.1: free 命令是

free
单位K
free -m
单位M
free -h 
单位G

free最常规的查看内存占用情况的命令

在这里插入图片描述

1.2: 参数说明

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

二、top命令

  • top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。
  • 按 q 退出
  • top命令也可以用来查内存
  • 输入top命令
  • 按x,高亮排序列,默认应该是%CPU,按CPU占用排序。
  • 按shift +M (或 按shift+> ), 可以看到高亮部分到%MEM,按内存占用排序。
  • 就可以查到具体是哪个进程在占用内存:
  • 然后 ps -ef |grep PID

在这里插入图片描述

三、ps命令

查看内存占用前10位:

[root@www ~]# ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -10

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql      1183 20.1 13.6 2522020 525860 ?      Ssl  11:42  52:13 /usr/local/mysql8/msql-8.0.30/bin/mysqld --defaults-file=/etc/my.cnf
root       1194  0.2  3.8 1017104 150568 ?      Ssl  11:42   0:31 /data/minio_data/minio server --console-address 192.168.1.100:33806 --address 192.168.1.100:9666 /data/minio_data >/data/minio_data/minio-start.log 2>&1 &
root       1196  0.0  0.5 1002932 19924 ?       Ssl  11:42   0:01 /usr/sbin/libvirtd
root       1181  0.0  0.5 574280 19504 ?        Ssl  11:42   0:04 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root        886  0.1  0.2 272008  8504 ?        Sl   11:42   0:20 /usr/sbin/vmtoolsd
root        724  0.0  0.2 474848  8988 ?        Ssl  11:42   0:02 /usr/sbin/NetworkManager --no-daemon
root       1186  0.0  0.2 216400  7944 ?        Ssl  11:42   0:01 /usr/sbin/rsyslogd -n
polkitd     666  0.0  0.2 612232 10076 ?        Ssl  11:42   0:00 /usr/lib/polkit-1/polkitd --no-debug
root        924  0.0  0.1  59484  5980 ?        S    11:42   0:00 /usr/lib/vmware-vgauth/VGAuthService -s
root       3477  0.0  0.1 161804  6120 ?        Ss   15:01   0:00 sshd: root@pts/1

或者:

[root@www ~]# ps aux --sort -rss | head -n 10

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql      1183 20.2 13.6 2522020 525860 ?      Ssl  11:42  52:46 /usr/local/mysql8/msql-8.0.30/bin/mysqld --defaults-file=/etc/my.cnf
root       1194  0.2  3.8 1017104 150568 ?      Ssl  11:42   0:31 /data/minio_data/minio server --console-address 192.168.1.100:33806 --address 192.168.1.100:9666 /data/minio_data >/data/minio_data/minio-start.log 2>&1 &
root       1196  0.0  0.5 1002932 19924 ?       Ssl  11:42   0:01 /usr/sbin/libvirtd
root       1181  0.0  0.5 574280 19504 ?        Ssl  11:42   0:04 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
polkitd     666  0.0  0.2 612232 10076 ?        Ssl  11:42   0:00 /usr/lib/polkit-1/polkitd --no-debug
root        724  0.0  0.2 474848  8988 ?        Ssl  11:42   0:02 /usr/sbin/NetworkManager --no-daemon
root        886  0.1  0.2 272008  8504 ?        Sl   11:42   0:20 /usr/sbin/vmtoolsd
root       1186  0.0  0.2 216400  7944 ?        Ssl  11:42   0:01 /usr/sbin/rsyslogd -n
root       3038  0.0  0.1 161804  6120 ?        Ss   14:12   0:00 sshd: root@pts/0

还可以查CPU:

查看CPU占用前10位:

[root@www ~]# ps aux | head -1;ps aux |grep -v PID |sort -rn -k +3 | head -10

在这里插入图片描述

或者:

[root@www ~]# ps aux --sort -pcpu | head -n 10

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql      1183 20.6 13.6 2522020 525860 ?      Ssl  11:42  54:00 /usr/local/mysql8/msql-8.0.30/bin/mysqld --defaults-file=/etc/my.cnf
root       3623  0.7  0.0      0     0 ?        S    15:08   0:26 [kworker/3:2]
root        419  0.4  0.0      0     0 ?        S<   11:42   1:06 [kworker/3:1H]
root       1194  0.2  3.8 1017104 150568 ?      Ssl  11:42   0:31 /data/minio_data/minio server --console-address 192.168.1.100:33806 --address 192.168.1.100:9666 /data/minio_data >/data/minio_data/minio-start.log 2>&1 &
root        141  0.1  0.0      0     0 ?        S    11:42   0:24 [kworker/6:1]
root        350  0.1  0.0      0     0 ?        S<   11:42   0:19 [kworker/5:1H]
root        351  0.1  0.0      0     0 ?        S<   11:42   0:19 [kworker/6:1H]
root        435  0.1  0.0      0     0 ?        S<   11:42   0:19 [kworker/4:1H]
root        455  0.1  0.0      0     0 ?        S    11:42   0:24 [kworker/4:2]

在这里插入图片描述

top命令详解

1、命令用法
首先解释一下该命令的具体用法。

top使用格式:

top [-] [d] [p] [q] [c] [C] [S] [s] [n]

参数说明:

  • d 指定每两次屏幕信息刷新之间的时间间隔;
  • p 通过指定监控进程ID来仅仅监控某个进程的状态;
  • q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行;
  • S 指定累计模式;
  • s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险;
  • i 使top不显示任何闲置或者僵死进程;
  • c 显示整个命令行而不只是显示命令名;

比如:

top                                // 每隔5秒显式所有进程的资源占用情况;
top -d 2                        // 每隔2秒显式所有进程的资源占用情况;
top -c                           // 每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名);
top -p 12345 -p 6789  // 每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况;
top -d 2 -c -p 123456  // 每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数;

2、实例解读
然后,我们结合实际的例子,来聊一聊该命令执行过程中所输出的信息,如何进行解读

在这里插入图片描述
第一行:运行概览

top - 09:15:56 up 31 min, 2 users, load average: 0.01, 0.03, 0.05
内容含义
09:15:56当前系统时间
up 31 min系统已经运行了31分钟(在这期间没有重启过)
2 users当前有2个客户端登录系统
load average: 0.01, 0.03, 0.05过去1分钟、5分钟、15分钟内系统的负载情况

注:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:任务概览
Tasks: 191 total, 2 running, 189 sleeping, 0 stopped, 0 zombie

这一行比较简单,就不多解释了,只说明一点,zombie表示僵尸进程,不理解的可自行百度。

第三行:CPU状态

%Cpu(s): 0.7 us, 0.5 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
内容含义
0.7 us用户空间所占百分比
0.5 sy内核空间所占百分比
0.0 ni改变过优先级的进程所占百分比
98.8 id空闲进程所占百分比
0.0 waIO等待进程所占百分比
0.0 hi硬中断(Hardware IRQ)所占百分比
0.0 si软中断(Software Interrupts)所占百分比
0.0 st虚拟机所占百分比

同样也要说明一点,这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,自行百度吧。

第四行:内存状态

KiB Mem: 3081144 total, 1445648 used, 1635496 free, 323064 buffers
KiB Swap: 4191228 total, 0 used, 4191228 free. 527176 cached Mem

内容含义
3081144 total物理内存总量(3G)
1445648 used使用中的内存总量(1.38GB)
1635496 free空闲内存总量(1.56G)
323064 buffers缓存的内存量 (315M)
4191228 total交换分区总量(4G)
0 used已使用的交换分区(0)
4191228 free空闲状态的交换分区(4G)
527176 cached Mem缓冲状态的交换分区(514K)

这里要说明一下,我们不能用windows的内存概念来理解这些数据,Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。

MEM一行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

对于内存监控,在top里我们要时刻监控SWAP一行中的已用数值used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

剩余行:进程详情

在这里插入图片描述
首先说明一点,上述命令的显示状态,是在Ubuntu 14.04(64位)系统的缺省状态下所显示的。在其他的系统下,或者同一个系统的不同设置状态下,top命令所显示出来的列项目是有所区别的,有可能与上述图片中的不一样。换句话说,top命令其实能显示非常多的项目信息,远不止上述图片中所述,究竟有哪些呢,如下表所述:

序号名称含义
aPID进程id
bPPID父进程id
cRUSERReal user name
dUID进程所有者的用户id
eUSER进程所有者的用户名
fGROUP进程所有者的组名
gTTY启动进程的终端名。不是从终端启动的进程则显示为?
hPR优先级
iNInice值。负值表示高优先级,正值表示低优先级
jP最后使用的CPU,仅在多CPU环境下有意义
k%CPU上次更新到现在的CPU时间占用百分比
lTIME进程使用的CPU时间总计,单位秒
mTIME+进程使用的CPU时间总计,单位1/100秒
n%MEM进程使用的物理内存百分比
oVIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
pSWAP进程使用的虚拟内存中,被换出的大小,单位kb
qRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
rCODE可执行代码占用的物理内存大小,单位kb
sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
tSHR共享内存大小,单位kb
unFLT页面错误次数
vnDRT最后一次写入到现在,被修改过的页面数
wS进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
xCOMMAND命令名/命令行
yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名
zFlags任务标志,参考 sched.h

从上表可以看出,其实top命令可以显示的信息列最多有26列,每一列的代号分别对应为a-z,只不过在缺省状态下,系统只显示其中比较重要的【PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND】列,而用户是完全通过指定的方式可以进行随意增减的。同时,在top命令运行的过程中,还可以进行一些其他的自定义设置,包括刷新速度、排序方式等,那么,究竟应该如何操作呢?请看下节:

3、个性化设置
上文说到,可以在输入top命令的时候携带一些参数来进行配置,可是有时候,输入top命令的时候,并不很清楚它的运行状态,有些参数也不知道如何设置,比如排序模式、需要显示的列等,而是要等到top命令运行起来了,才好进行设置。因此,有没有一种方法是在top命令运行的过程中,能够对其显示的模式、内容等进行临时的设置呢?

答案当然是有的!下面就介绍一下在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。

h或者? 显示帮助画面,给出一些简短的命令总结说明;
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽;
i 忽略闲置和僵死进程。这是一个开关式命令;
q 退出程序;
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10;
S 切换到累计模式;
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F 从当前显示中添加或者删除项目。按下此键之后,系统会进入配置界面,显示出目前所能支持的全部条目,用户可以进行自定义的删减和配置;
o或者O 改变显示项目的顺序;
l 切换显示平均负载和启动时间信息;
m 切换显示内存信息;
t 切换要不要显示进程和CPU状态信息这两行;
c 切换显示命令名称和完整命令行;
M 根据内存大小进行排序;
P 根据CPU使用百分比大小进行排序;
T 根据时间/累计时间进行排序;
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法;
怎么样,是不是非常灵活?自己去试试吧?

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

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

相关文章

IP应用场景查询API:深入了解网络用户行为的利器

前言 随着数字时代的不断发展&#xff0c;互联网已经成为人们生活的重要组成部分。而随着越来越多的业务和社交活动迁移到在线平台上&#xff0c;了解和理解网络用户行为变得至关重要。为了满足这个需求&#xff0c;IP 应用场景查询 API 崭露头角&#xff0c;成为深入了解网络…

通讯软件017——分分钟学会Kepware OPC UA Server配置

本文介绍如何配置Kepware OPC UA Server&#xff0c;通过本文可以对OPC UA的基本概念有所了解&#xff0c;掌握OPC UA的本质。更多通信资源请登录网信智汇(wangxinzhihui.com)。 1. 创建OPC UA Server 点击“OPC UA Configuration”&#xff0c;弹出配置界面。 点击“添加”&a…

云计算时代的采集利器

大家好&#xff01;在今天的知识分享中&#xff0c;我们将探讨一个在云计算环境中的爬虫应用利器——独享IP。如果你是一名爬虫程序员&#xff0c;或者对数据采集和网络爬虫有浓厚的兴趣&#xff0c;那么这篇文章将向你展示独享IP在云计算环境下的应用价值。 1. 什么是独享IP&…

学生宿舍护眼台灯怎么样选择?适合宿舍使用的五款台灯

众所周知&#xff0c;咱们的学生是作为近视基数最大的群体&#xff0c;平时压力大导致用眼都很频繁&#xff0c;所以有些学生从小就带上了眼睛&#xff0c;大街上更是随处可见戴着近视眼镜的学生&#xff0c;这对于孩子未来的发展很不利&#xff0c;所以众多家长朋友们也都开始…

这可能是最全面的Python入门手册了!

无论是学习任何一门语言&#xff0c;基础知识一定要扎实&#xff0c;基础功非常的重要&#xff0c;找到一个合适的学习方法和资料会让你少走很多弯路&#xff0c; 你的进步速度也会快很多&#xff0c;无论我们学习的目的是什么&#xff0c;不得不说Python真的是一门值得付出时间…

Java8实战-总结22

Java8实战-总结22 使用流数值流原始类型流特化数值范围数值流应用&#xff1a;勾股数 使用流 数值流 可以使用reduce方法计算流中元素的总和。例如&#xff0c;可以像下面这样计算菜单的热量&#xff1a; int calories menu.stream().map(Dish::getcalories).reduce(0, Int…

LeetCode 刷题记录——从零开始记录自己一些不会的

1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环&#xff0c;太low了 用一个变量记录前一个位置 代码 class Solution { public:int captureForts(vector<int>& forts) {int ans 0, pre -1;for (int i 0; i < forts.size(); i) {if (forts[i] 1 || forts…

如何解决ArcGIS中数据显示乱码问题?

你是否遇到过在ArcGIS中打开文件的时候&#xff0c;却显示乱码的问题呢&#xff1f; 其根本原因是字符编码造成的&#xff0c;这里就来分享一下如何解决在ArcGIS中导入数据后显示乱码的方法。 数据显示乱码 我们这里以一份“移动基站”数据为例&#xff0c;将它直接拖放到Arc…

webserver 同步 I/O 模拟 Proactor 模式的工作流程

一、服务器编程基本框架 虽然服务器程序种类繁多&#xff0c;但其基本框架都一样&#xff0c;不同之处在于逻辑处理。 二、两种高效的事件处理模式 服务器程序通常需要处理三类事件&#xff1a;I/O 事件、信号及定时事件。 有两种高效的事件处理模式&#xff1a;Reactor 和 Pro…

视频监控汇聚平台EasyNVR安防视频平台如何利用视频监控与AI智能识别技术,实现铁塔基站机房的无人值守方案

安防监控EasyNVR可视化视频汇聚管理系统已在全国多地落地部署&#xff0c;视频集中存储EasyNVR平台可提供多协议&#xff08;RTSP/RTMP/GB28181/海康Ehome/大华/海康SDK等&#xff09;的设备视频接入、采集、处理、分发、AI智能检测等服务。平台可以有效解决通信铁塔各基站机房…

redhat7.6安装weblogic12c

目录 一、环境准备 二、使用root创建用户和组 三、创建部署目录 四、上传安装包 五、创建 oraInst.loc 文件 六、创建wls.rsp 响应文件 七、进行安装 八、使用 wlst.sh 离线模式创建一个域 九、启动服务 十、浏览器访问 一、环境准备 REDHAT版本&#xff1a;Redhat…

TheRouter 框架原理

TheRouter 框架入口方法 通过InnerTheRouterContentProvider 注册在AndroidManifest.xml中&#xff0c;在应用启动时初始化 <application><providerandroid:name"com.therouter.InnerTheRouterContentProvider"android:authorities"${applicationId}.…

基于SSM的医院门诊预约挂号系统的设计与

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着医院管理的日益复…

【2023最新版】DataGrip安装及使用教程

目录 一、Jetbrains学生认证 二、DataGrip下载及安装 1. 使用Jetbrains toolbox a. 安装Jetbrains toolbox b. 安装DataGrip 2. 直接安装 a. 官网下载 b. 安装 三、DataGrip的使用 1. 配置默认设置 2. 安装插件 一、Jetbrains学生认证 JetBrains学生认证是JetBrain…

LeetCode 1004.最大连续1的个数

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 硬往题目介绍上边去想的话其实非常困难&#xff0c;如果换种方式思考就会简单许多。 若我们将思想转化为&#xff0c;找出最长的子串(里面含有的0的数量最大为k)&#xff0c;然后返…

WebDAV之π-Disk派盘 + 天天

天天是一款非常简单实用的每日打卡助手,旨在帮助用户制定和跟踪每日或每周的打卡任务,同时提供了自由的选择空间以适应用户的不同需求和偏好。 以下是天天应用的一些主要特性和功能: 1. 优美简洁的用户界面:没有广告,无需网络,可以离线使用,应用大小极小,仅需不到1MB的…

【网络教程】GitHub搜索技巧大揭秘

文章目录 1. 使用关键词优化搜索2. 结合布尔运算符3. 利用星号扩展搜索4. 高级搜索语法5. 按照星标数量搜索6. 使用文件类型搜索7. 在特定分支上搜索8. 使用文件名搜索9. 搜索贡献者10. 使用标签筛选仓库在开发过程中,我们经常需要在GitHub上查找代码、库或相关文档。本文将介…

SNMP的监控

SNMP的监控 一、SNMP 介绍1.1 什么是SNMP1.2 SNMP的组件1.2.1 网络管理系统 NMS&#xff08;Network Management System&#xff09;1.2.2 代理进程&#xff08;Agent&#xff09;1.2.3 被管对象&#xff08;Managed Object&#xff09;1.2.4 管理信息库MIB&#xff08;Managem…

Vue3【Provide/Inject】

前言 自从使用了Provide/Inject代码的组织方式更加灵活了&#xff0c;但是这个灵活性的增加伴随着代码容错性的降低。我相信只要是真的在项目中引入Provide/Inject的同学&#xff0c;一定一定有过或者正在经历下面的状况&#xff1a; 注入名&#xff08;Injection key&#x…

第二证券:经济利好,联储“利空”

当地时刻9月6日&#xff0c;美股接连9月低迷局面&#xff0c;三大指数低开低走团体收跌。 宏观经济数据方面&#xff0c;美国8月ISM非制造业PMI意外升至半年新高&#xff0c;接连八个月扩张&#xff0c;工作指数升至2021年11月来最高&#xff0c;新订单指数也创六个月新高&…