linux清理进程内存,linux 内存使用管理及释放

Linux 内存使用检查及释放内存

如何查看linux内存使用:

1.free -g 命令 或 free -h

66609830db6ae224cd07172b4aa20cbf.png

a76b46b7e0f2459e2969fee3b5dda3e5.png

c6113cbb78d136ba2c0c783dff4e6437.png

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

使用 cat /proc/meminfo 查看内存详细使用

0a3b2dc8574e88a086fe97542a245497.png

atop查看

通过atop动态显示系统资源(cpu、内存、网络、输入/输出、内核),并且高亮标准高负载的部分,内存统计报告包括了总计/闲置内存、缓存的/缓冲的内存和已提交的虚拟内存。

[root@server~]# yum install atop

[root@server~]# atop

9538c62a762999d6d5cb1b1bb8e251de.png

htop查看

Htop命令是一个机遇ncurses的交互式进程视图,实时显示了每个进程的内存使用情况。可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小,也可以横向或纵向滚动进程列表进行查看。

[root@server~]# yum install htop

[root@server~]# htop

1fa0fd4d7fde9890e9dbb6b367a95119.png

acf76f8a77736f78c8e776ccc8c705a0.png

Gnome System Monitor

Gnome 系统的图形化界面监控程序,展示cpu、内存、交换区和网络在内的系统资源使用率

前提是需要安装gnome图形化界面。

[root@server~]# gnome-system-monitor

ps aux –sort -rss 查看用户进程所占内存、CPU百分比

71d8f0b2efd2369d19aa0fa3bb7f1e0b.png

User:该进程所属用户

PID: 该进程ID号

%CPU:该进程所占CPU资源百分比;

%MEM:该进程所占物理内存百分比;

VSZ:该进程所占虚拟内存量(Kbytes)

RSS:该进程所占固定的内存量(Kbytes)

TTY:该进程在哪个终端上面运行(?表示与终端无关、 tty1-tty6:本机上面的登陆者的进程、 pts/0 等表示通过网络登入主机的程序)

STAT:该进程状态(D 不可中断、R正在运行、 S 睡眠状态、 T停止状态、 Z 僵尸状态)

START:该进程被触发启动的时间;

TIME:该进程实际使用CPU运行的时间;

Command:该进程的世纪指令。

ps -eo user,uid,pid,ppid,size,vsize,share,nice,priority,pmem,trs,rss,time,stat,cmd

user 用户名

uid 用户号

pid 进程号

ppid 父进程号

size 内存大小, Kbytes字节.

vsize 总虚拟内存大小, bytes字节(包含code+data+stack)

share 总共享页数

nice 进程优先级(缺省为0, 最大为-20)

priority(pri) 内核调度优先级

pmem 进程分享的物理内存数的百分比

trs 程序执行代码驻留大小

rss 进程使用的总物理内存数, Kbytes字节

time 进程执行起到现在总的CPU暂用时间

stat 进程状态

cmd(args) 执行命令的简单格式

3e074137af75eb320ca8c36562743266.png

Memstat

通过memstat查看给定进程相关的可执行文件、数据、共享库等。

[root@server~]# memstat -p PID

内存释放

Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率。

所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用。

所以真正剩余的内存是free+buff/cache .

但是有些时候大量的缓存占据空间,这时候应用程序回去使用swap交换空间,从而使系统变慢,这时候需要手动去释放内存

在正式生产环境下,我们不要频繁的去释放内存,只在必要时候清理内存就可。更重要的是我们应该从应用程序层面去优化内存的利用和释放。

Linux下/proc目录下的数据和文件,都是内中中的实时数据,相应的关于内存的管理方式是在/proc/sys/vm/drop_caches文件中:

ac6b1a9050c383caf49926f584acd1dd.png

该文件存放的不是具体的文件内容,而是0 – 3 这几个数字:

0: 系统默认值,默认情况下表示不释放内存,由操作系统自动管理;

1: 释放页缓存;

2: 释放dentries和inodes;

3: 释放所有缓存

因此,分别将1 – 3 这3个数字重定向到drop_caches中就可以实现内存的释放,

一般释放内存都是重定向3到文件中,释放所有的缓存;

37f70408e54359a1611a3b6be75122bf.png

释放内存步骤:

[root@server~]# sync #将所有正在内存中的缓冲区写到磁盘中;

[root@server~]# echo 3 > /proc/sys/vm/drop_caches #释放所有缓存

释放完后,可再通过 free -g 进行查看。

释放完后,再设置drop_caches值为0,重新让操作系统重新分配内存。

补充:直接echo 0 > /proc/sys/vm/drop_caches 会出现错误。

3abecc01b3faeb4db6bfcf60791701cb.png

要禁用此他们,可设置为4 回显到drop_caches中。

或者重启系统,会自动恢复到0

8376563b7cd8f0f12796887bde1fbe62.png

补充几个常用的命令:

cpu只能用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k3|head -10

内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head -10

cpu或内存使用排序

ps auxw --sort=rss

ps auxw --sort=%cpu

%MEM 进程的内存占用率

MAJFL is the major page fault count,

VSZ 进程所使用的虚存的大小

RSS 进程使用的驻留集大小或者是实际内存的大小(RSS is the "resident set size" meaning physical memory used)

TTY 与进程关联的终端(tty)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值