linux中查看虚拟内存和cpu占用率的命令是什么

嘿,让我告诉你有关 vmstat 的信息。
由于我在杭州运营一台服务器,所以每天都要使用它。

我记得有一年,也许是 2 01 8 年,我们的旧数据库服务器突然卡住了。
CPU 已满,所有操作都很慢。
我的心猛地一跳,于是我赶紧打开终端,输入 vmstat 1 让它每秒刷新一次数据。

屏幕上出现的数字让我震惊。
我将引导您完成您提到的每个参数。

对于内存来说,swpd 是什么?它表示已从内存交换到磁盘的页数。
当时我看到swpd不断增加,从几百KB逐渐增加到几MB。
我感觉有些不对劲。
为什么内存使用量越来越少?我很快检查了一下,发现是数据库出了问题,需要添加更多内存。

看看空的空间,这是空闲内存。
当时这个值相当小,几乎一直在0左右徘徊,对于什么是buff、缓存没有太深的印象。
不管怎样,我只是想看看他们有没有忙什么。

si 和交换方向相同。
si 表示从磁盘传输到内存,反过来又表示从内存传输到磁盘。
当时我的si基本是0,但是我的si很高,每秒几千KB。
这意味着什么?这意味着系统内存几乎耗尽,数据必须快速塞入内存。
此时,你必须考虑是否添加更多内存或删除不重要的进程。

对于io来说,bi指的是写入块设备的数量,bo指的是从块设备读取的数量。
当时我的ball和bo都很高,说明盘很忙。
结合之前的高点,我估计是磁盘 I/O 拖慢了 CPU 速度。

对于System来说,in是中断次数,cs是上下文切换次数。
当时cs极高,说明CPU在进程间切换过于频繁。
为什么?由于数据库查询速度很慢,系统必须不断切换线程来处理这个或那个。
此时就必须优化SQL语句。

对于CPU来说,us是用户状态,sy是系统状态,idle id。
那时候我们和我的sy都很高,而我的id很低。
这表明CPU很忙但没有做认真的工作而是在处理系统调用或用户进程。
此时,您必须查看是否有任何进程运行得特别困难。

总的来说,vmstat是一个很好的工具,可以帮助你快速发现问题。
但你必须知道如何读取数字。
就像我提到的例子,通过swpd、free、si、so、bi、bo、cs数据,我发现数据库内存不足导致磁盘I/O压力大,CPU频繁切换,最终导致服务器崩溃。

但是,vmstat也有局限性。
正如你所说,它只能看整个过程,而不能看每个单独的过程。
如果你想知道为什么某个过程慢,你必须使用其他工具,例如top,ps或strace。

哦,顺便说一句,还有一件事。
请注意 Procs 部分。
r 是等待运行的进程数,b 正在休眠,w 正在交换。
它们的总和就是系统中实际运行的进程数。
但请注意,当 vmstat 计算时,它本身(即您运行的 vmstat 进程)不包括在内。
这是需要记住的事情。

总之,vmstat是一个强大的工具,但是要用好它,必须要结合实际情况,多观察、多分析。
当时我就是靠这个解决了很多服务器问题。

希望我的经验对你有用!如果有什么不明白的地方,请问我。

linux查看虚拟内存使用什么命令?

我记得有一次使用vmstat命令来检查公司服务器上的内存使用情况。
那是一个星期五的下午,系统负载突然增加。
我担心这是由于内存泄漏造成的。
我输入 vmstat -n 2 5 每两秒连续五次查看内存使用情况。
当我看着屏幕上跳跃的数字时,我意识到内存使用率实际上在增加,但交换分区使用率非常低,这让我有点困惑。
等等,还有别的事。
突然我想到我们最近更新了数据库。
会不会是数据库的问题?

linux查看内存大小命令是什么

最方便的方法是简单地说“gratis -m”。
输出的第一行 Total 是以 MB 为单位的总内存。

我们上周刚刚与服务器合作,一位客户提出了这个要求。
只需使用 free -m 并查看整行即可。

cat /proc/meminfo 想要获取 MemTotal 行中的 KB 数。
数据比较完整,但理解起来比较混乱。

说白了,如果你想要最大内存,请使用 free -m。
要仔细查看内存分配,请使用 cat /proc/meminfo。

自己找找,什么适合?