LINUX如何查看内存使用情况_Linux查看内存占用和系统资源的方法

Linux 内存监控...老实说,这非常重要。

首先使用free命令查看。
只需输入 free-h 即可。
如果你看这个命令并加上 -h,结果会更容易理解,而且你不需要自己转换它。
总共有多少内存、已使用内存、不活动内存以及可用内存。
这种可用性是关键,它可以比纯粹的空闲内存更好地揭示真实状态。
例如这个例子:
mem:7 .7 G 使用:2 .3 G 免费:1 .2 g 共享:2 00M 增益/缓存:4 .2 G 可用:4 .8 G
你看,有4 .8 G可用,这比纯粹的空闲还多,因为缓冲区/缓存内存可以随时使用。
添加-M,即以MB为单位,数字更加精确,适合想知道具体MB的时候。

top 命令也可以使用,但 htop 更好。
需要安装htop,sudo apt install htop。
这个界面看起来比较吸引人,你可以通过点击它们来查看哪些进程占用了最多的内存。
运行htop,按F6 改变排序方式,按照内存使用量排序。

有关内存的更多详细信息,请参见/proc/meminfo。
该文件包含有关内核内存的各种统计信息。
例如memtotal是内存总量,memfree是非活动内存总量,buffers/cached是内核存储数据的缓存。
Swaptotal 是交换分区的总大小。
您可以通过 cat /proc/meminfo | 执行此操作你可以用 grep "memtotal|memfree|buffers|cached|swaptotal" 来查看。
其实Free Command看到的底层数据它来自这里。

要检查进程使用了​​多少内存,请使用 ps。
例如, ps aux --sort=-%mem | Top-1 0 将列出使用内存最多的 1 0 个进程。
查看 %MEM 列以了解哪个进程消耗最多内存。
如果你想查看 Nginx 的使用情况,只需运行 ps aux | grep nginx。

有一些事情值得注意。
可用内存和空闲内存是不同的。
free是指没有被占用的,available是指可以回收到缓存中的,所以更准确。
Linux会使用不活动的内存作为缓存并存储一些磁盘数据。
当你需要内存时,内核会自动将数据扔到缓存中供你使用。
因此,如果可用内存较低,请不要惊慌,它可以被内核用作缓存。

对于日常使用来说,Free-H和HTop足以快速查看和实时监控。
要深入研究问题,需要使用 /proc/meminfo 和 ps。
主要是要了解什么是可用内存和缓存,不要被空闲内存所迷惑。

linux如何查看内存

我记得有一次,在办公室的一台Linux服务器上,系统突然变得非常卡顿,我想知道内存使用情况。
我坐在办公桌前,电脑屏幕上显示着代码和命令行界面。
我打开一个终端,输入命令 - cat /proc/meminfo,然后按 Enter。
屏幕上立刻出现了compact的数据,我看了一眼memfree一栏,显示剩余内存为3 .5 G。
那一刻我突然想到,如果这个数字低于某个阈值,我是不是应该考虑升级内存呢?等等,还有一件事。
我记得看到Linux的内存管理相当复杂。
这一数字变化背后可能还有另一个故事。

如何解决Linux系统中出现的进程占用过多内存问题

糟糕,我遇到了 Linux 系统进程占用大量内存的问题。
记得有一次,2 01 8 年,我负责维护的一台服务器突然内存使用超标。
那场景简单来说就是你手机里的所有内存突然被APP占用了,造成各种卡顿。

首先,我需要查看内存使用情况。
我使用了 free-h 命令,效果很好。
它自动显示系统总内存、已用内存、剩余内存和缓存/交换区域状态。
当时我一看,哇,剩余内存只有5 G了,交换空间利用率却提高到了8 0%。
这显然是由于内存压力较大造成的。

然后我需要找出哪个进程占用了更多内存。
我用max命令一看,哇,有一个叫java的进程,内存占用高达9 0%。
我记下PID并用ps -p PID -ocmd验证。
原来是一个Java进程,负责处理一些大数据分析任务。

接下来,我需要优化这个流程。
首先我尝试重新启动Java进程,但结果还是一样。
然后,我需要检查代码。
我仔细查看了代码,发现有一个很大的循环,创建新对象却永远不会及时释放它们。
我优化了代码,使用了对象池,内存占用立刻就下降了。

最后,我需要防止这个问题。
我使用了max命令来实时监控,同时也使用了vmstat、sar之类的东西来分析内存使用情况,看看是否有异常情况。

如果还不行,比如内存长期不够用,那我就该考虑升级硬件了。
例如,添加物理内存,或者调整交换分区的大小。

简单来说,排除消耗内存的Linux系统进程就是监控、查找、优化三个步骤。
先升级软件,如果失败再升级硬件。
这个方法总是有效的。