您当前的位置: 首页 >  止步前行 linux

Linux内存分析相关命令

止步前行 发布时间:2021-12-10 19:15:04 ,浏览量:5

文章目录

  • 1. top/uptime
  • 2. vmstat
  • 3. free
  • 4. df
  • 5. iostat
  • 6. jps
  • 7. jinfo
  • 8. jstack
  • 9. jstat

在系统的日常维护过程中,有时候可能服务会出现内存占用过高,死锁的情况,这时候就需要我们用一些命令来查看系统的运行情况,导出一些系统日志来帮我们分析,下面就来记录下常用的几个命令吧,是Linux环境。

1. top/uptime

top命令用来监控Linux的系统状况,能够实时显示系统中各个进程的资源占用情况,下面来介绍下具体意思。

第一行是任务队列信息,参数具体含义如下:

属性含义
10:05:49表示系统当前时间
up 91days,22:46系统已经运行时间
8 users当前登录用户数
load average: 0.31, 0.39, 0.40系统的负载,即任务队列的平均长度,load average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均值

注:linux系统是5秒钟进行一次Load采样。

第二、三行是进程和CPU的信息,当有多个CPU时,这些内容可能会超过两行,参数具体含义如下:

属性含义
349 total进程总数
1 running正在运行的进程数
347 sleeping睡眠的进程数
1 stopped停止的进程数
0 zombie僵尸进程数
1.6 us用户空间占用CPU百分比
0.7 sy内核空间占用CPU百分比
0.0 ni用户进程空间内改变过优先级的进程占用CPU百分比
97.6 id空闲CPU百分比
0.0 wa等待输入输出的CPU时间百分比
0.0 hi硬中断(Hardware IRQ)占用CPU的百分比
0.0 si软中断(Software Interrupts)占用CPU的百分比
0.0 st

第四、五行是内存信息,参数具体含义如下:

属性含义
KiB Mem: 64002308 total物理内存总量
3351184 free空闲内存总量
20198152 used使用的物理内存总量
40452972 buff/cache用作内核缓存的内存量
KiB Swap: 16515068 total交换区总量
16034852 free空闲交换区总量
480216 used使用的交换区总量
43001008 avail Mem代表可用于进程下一次分配的物理内存数量

计算可用内存数有一个近似的公式: 第四行的free + 第四行的buffer

下面就是关于进程信息:

属性含义
PID进程id
UID进程所有者的用户id
USER进程所有者的用户名
PR优先级
NInice值,负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%MEM进程使用的物理内存百分比
%CPU上次更新到现在的CPU时间占用百分比
TIME+进程使用的CPU时间总计,单位1/100秒
SWAP进程使用的虚拟内存中,被换出的大小,单位kb
COMMAND命令名/命令行

对于上面的各个字段的介绍,可能有的人会不一样,我们可以按F键来把全部属性都调出来,具体展示哪个,可以选择。用上下键选择选项,按下空格键可以决定是否在基本视图中显示这个选项,q或者esc是保存。

默认进入top时,各进程是按照CPU的占用量来排序的,在top基本视图中,按键盘数字"1"可以展开监控每个逻辑CPU的状况:

top命令是一个非常强大的功能,但是它监控的最小单位是进程,如果想监控更小单位时,就需要用到ps或者netstate命令来满足我们的要求

uptime是展示的基本信息,是top的第一行信息

2. vmstat

vmstat命令是用来查看CPU的使用情况

vmstat -n 2 3:表示每2秒采样一次,共采样3次

mpstat -P ALL 2:表示查看所有CPU核信息

pidstat -u 1 -p 进程编号:表示每个进程使用CPU的用量分解信息

3. free

free命令用来查看内存信息,单位是Kb

free -m :以M为单位查看

free -g:以G为单位查看

free -h:以人类能看懂的单位查看,h表示human

pidstat -p 进程编号 -r 采样间隔秒数

4. df

df命令用于查看磁盘剩余空间数

df -h:以人类能看懂的方式查看

5. iostat

iostat命令用于查看磁盘IO

iostat -xdk 2 3

pidstat -d 采样间隔秒数 -p 进程编号

6. jps

7. jinfo

​ jinfo -flags 线程ID :查看线程的启动参数

​ jinfo -flag 具体参数 线程ID:查看线程的指定参数是否开启,+表示开启,-表示没有开启

​ jinfo -flag PrintGCDetails 线程ID

8. jstack

9. jstat

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量

命令的格式如下:

jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

垃圾回收统计,命令:jstat -gc 9228

S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

关注
打赏
查看更多评论

止步前行

暂无认证

  • 5浏览

    0关注

    144博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录