Linux内存占用过高?非也

Linux内存占用过高?非也,第1张

先来在阿里的ECS上top一下感受内存爆满的感觉,终端输入 top

结合 *** 作系统,计组等课程,以及多年以来windows培养给我的直觉,认为0.96G(1016272K)的总内存,使用了0.84G(880960K)的内存,使用率高达88%。然而我还啥都没干,怎么会这样呢?

仔细查看还会发现后面有一个buffers,Swap后面还有一个Cached Mem。

现在我们用free来观察下

虽然Mem显示了0.9G左右的used,但是-/+buffers/cache(减去buffers和cache的结果)可以看到,当前进程实际占用内存是0.24G(256348K),而可用空闲(free)内存为0.72G(759924K)。

可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

如上面的例子:共1G的内存,0.9G被占用,但是buffer和cached

mem部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。

因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。

再举个栗子: 这个是我在RPi一群看到的一个群友发的探针监测截图

观察内存使用状况一栏,发现物理内存功925.89M,已用911.74M,Cache化的内存是676.46M,Buffers为61.3M,现在用上述公式:

带入:

 Linux服务器如何查看CPU占用率、内存占用、带宽占用的命令图中红色部分即为占用百分率,下面是每个进程的CPU占用率,如果服务器是多核CPU可能在下方看到有些进程CPU占用超过100%,这种一般是该进程使用了多核。 内存占用率:free -m 图中红色部分即为占用,即used、free即为剩余。(注意中在第二行数字中找哦。) 带宽占用: 使用vmstat命令,输入命令:vmstatlinux服务器的相关信息查看(端口占用,cpu、内存占用,防火墙,系统信息,vim编辑器使用等)一、端口占用情况 (1)查看所有端口、进程的使用情况: netstat -tunlp (2)查看某一端口的使用情况: netstat -tunlp|grep 5560 二、查看内存使用情况(1)查看占用情况(动态):top 按下P(大写)可以找到占用内存最大的进程 (2)查看占用情况(总的):free (3)查看占用内存最多的N个进程: ps -aux | sort -k4nr | head -K如果是10个进程,K=10,如果是最高的三个,K=3 (4)查看硬盘空间大小:df -lh三、防火墙防火墙iptables和firewall (1)查看防火墙状态: firewall-cmd --state (2)开启、关闭防火墙: 开启: systemctl start firewalld 关闭:systemctl stop firewalld.service 或者 service firewalld stop (3)重启防火墙:firewall-cmd --reload(重新载入配置,在添加规则之后,需要执行此命令) (4)防火墙是否开机启动:禁止防火墙开机启动:systemctl disable firewalld.service设置防火墙开机启动:systemctl enable firewalld.service四、查看系统信息(1)查看系统位数:getconf LONG_BIT (2)查看内存信息:查看所有内存信息: cat /proc/meminfo查看内存容量: grep "MemTotal" /proc/meminfo  (3)查看CPU信息:查看cpu个数(几核):cat /proc/cpuinfo |grep "processor"|wc -l五、linux中文乱码:我只是用了第三部,更改了ssh客户端属性配置就可以了  1. 配置SSH 终端 (以xshell为例): 打开“文件”(File)- “属性” (Properties), 在“终端”(Terminal),将“编码”(Encoding)改为UTF-8 即可。六、Xshell远程连接Linux时无法使用小键盘的解决方式: 七、linux中vi编辑器的退出 *** 作保存,但不退出vi             :w 保存并退出vi                    :wq 退出vi,但不保存更改      :q! 用其他文件名保存            :w filename 在现有文件中保存并覆盖该文件    :w! filename 查找文字:在一般模式下输入/和你要查找的文字单词,例如/port,此时再按下 n 会跳转至改文字所在的下一处。

区别于Windows的内存管理。Linux内存使用的主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。

没有正在运行的程序的话,一般是驱动的问题。如果安装了私有驱动的话,那就删除。开源驱动可满足除了大型游戏之外的大多数需要。Windows是只在需要内存时, 才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux都将能充分利用起来,发挥了硬件投资带来的好处,而 Windows只将其做为摆设,即使增加8GB甚至更大。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8350259.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存