关于后端:linux-系统资源命令

2次阅读

共计 5422 个字符,预计需要花费 14 分钟才能阅读完成。

系统资源命令

以后零碎负载

w 查看的是整体的负载,能够来察看以后零碎有没有压力

w

第一行显示的内容顺次为:工夫、零碎运行工夫、登录用户数、均匀负载(1 分钟、5 分钟、15 分钟)

第二行后展现的信息为:以后登录的都有哪些用户、在哪里登录的等信息

均匀负载不要高于设施外围数

系统资源查看

vmstat 命令

应用 vmstat 命令能够更加细化 w 命令,来查看具体是哪里的压力

显示内存、分页、块传输和 CPU 流动的相干信息,评估 cpu 性能

#vmstat [刷新延时 刷新次数]
# 应用 vmstat 检测,每 1 秒刷新一次,一共刷新 3 次
vmstat 1 3

<!– more –>

后果信息

procs 过程

  • r 期待 cpu 工夫片和运行的过程数,数量越大,零碎越忙碌,如果长期大于服务器 cpu,则阐明 cpu 不够用了
  • b 期待资源的过程数,如期待 IO、内存等,数量越大,零碎越忙碌,如果该值长时间大于 1,须要关注一下

memory 内存

  • swpd 切换到替换分区的内存大小,单位 kb,如果 swpd 的值不为 0,或者比拟大,只有 si 和 so 的值长期为 0 就不必放心
  • free 闲暇的内存容量,单位 kb
  • buff buffers cache 的内存容量,行将写入磁盘的,单位 kb,个别对块设施的读写才须要缓冲
  • cache page cached 的内存容量,从磁盘中读取的,单位 kb,个别作为文件系统进行缓存,频繁拜访的文件都会被缓存。如果 cache 值比拟大,阐明缓存的文件数较多,如果此时 io 中的 bi 比拟小,阐明文件系统效率比拟好

swap 替换分区,这两个数越大,阐明内存不够用了,内存中的数据频繁替换到替换分区中,对系统性能影响极大

  • si 每秒从内存进入替换区的数据的容量
  • so 每秒从替换区进入内存的数量

io 磁盘 IO,这两个数越大,代表磁盘 IO 越忙碌。如果 bi+bo 超过 1000,而且 wa 值较大,示意零碎磁盘 IO 有问题

  • bi 从块设施读取数据的总量,读磁盘 kb/s
  • bo 从块设施写入数据的总量,写磁盘 kb/s

system 零碎信息,显示采集距离内产生的中断次数,这两个数越大,示意零碎与接口设施的通信越忙碌,由内核耗费的 CPU 工夫越多

  • in 某一时间距离内观测到的每秒被中断的过程次数
  • cs 每秒进行事件切换次数(上下文切换的次数)

cpu CPU 信息,如果 us+sy 大于 80%,阐明可能存在 cpu 资源有余

  • us 用户过程耗费 CPU 运算工夫的百分比,如果长期大于 50%,须要思考优化程序
  • sy 内核过程耗费 CPU 运算工夫的百分比
  • id 闲暇 CPU 的工夫百分比
  • wa 期待 IO 所耗费的 CPU 工夫百分比。wa 值越高,阐明 IO 期待越重大。如果 wa 超过 20%,阐明 IO 期待重大,引起 IO 期待的起因可能是磁盘大量随机读写造成的,也可能是磁盘或磁盘控制器的带宽瓶颈造成的
  • st 被虚拟机所盗用的 CPU 占比

iostat 命令

显示均匀磁盘流动和处理器负载状况

#iostat [刷新延时 刷新次数]
# 应用 iostat 检测,每 1 秒刷新一次,一共刷新 3 次
iostat 1 3

选项
-d  查看磁盘应用状况
-k  以 KB 为单位显示
-c  显示 CPU 应用状况
-t  打印出统计信息开始执行是啊金
-x device 指定要统计的磁盘设施名称

%user 在用户级别执行

%nice 以 nice 优先形式在用户级别执行

%system 在零碎级别执行(内核过程)

%iowait 期待 IO

%steal 期待虚构过程

%idle 闲暇工夫

tps 每秒解决的 IO 申请数,kB_read/ s 每秒从设施读取的数据量,kB_wrtn/ s 每秒向设施写入的数据量,kB_read 读取的数据总量,kB_wrtn 写入的数据总量

ifstat 命令

网络 io

ifstat

iftop 命令

iftop -ieth1 -nP

- i 设定监测的网卡,如:# iftop -i ens33
-B 以 bytes 为单位显示流量(默认是 bits),如:# iftop -B
- n 使 host 信息默认间接都显示 IP,如:# iftop -n
- N 使端口信息默认间接都显示端口号,如: # iftop -N
- F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24 或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮忙,显示参数信息
- p 应用这个参数后,两头的列表显示的本地主机信息,呈现了本机以外的 IP 信息;
- b 使流量图形条默认就显示;
- f 这个临时还不太会用,过滤计算包用的;
- P 使 host 信息及端口信息默认就都显示;
- m 设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入 iftop 页面后还能够对页面进行调整,参数如下

按 h 切换是否显示帮忙;
按 n 切换显示本机的 IP 或主机名;
按 s 切换是否显示本机的 host 信息;
按 d 切换是否显示远端指标主机的 host 信息;
按 t 切换显示格局为 2 行 / 1 行 / 只显示发送流量 / 只显示接管流量;
按 N 切换显示端口号或端口服务名称;
按 S 切换是否显示本机的端口信息;
按 D 切换是否显示远端指标主机的端口信息;

按 p 切换是否显示端口信息;
按 P 切换暂停 / 持续显示;
按 b 切换是否显示均匀流量图形条;
按 B 切换计算 2 秒或 10 秒或 40 秒内的均匀流量;
按 T 切换是否显示每个连贯的总流量;
按 l 关上屏幕过滤性能,输出要过滤的字符,比方 ip, 按回车后,屏幕就只显示这个 IP 相干的流量信息;
按 L 切换显示画面上边的刻度; 刻度不同,流量图形条会有变动;
按 j 或按 k 能够向上或向下滚动屏幕显示的连贯记录;
按 1 或 2 或 3 能够依据右侧显示的三列流量数据进行排序;
按 < 依据右边的本机名或 IP 排序;
按 > 依据远端指标主机的主机名或 IP 排序;
按 o 切换是否固定只显示以后的连贯;
按 f 能够编辑过滤代码,这是翻译过去的说法,我还没用过这个!
按! 能够应用 shell 命令,这个没用过!没搞明确啥命令在这好用呢!
按 q 退出监控

pidstat

pidstat 是一个多功能的诊断工具

# 能够监控 cpu
# -p 指定过程 id 每秒钟采样一次,一共采样三次 - u 示意对 cpu 使用率的监控 -t 参数将监控细化到线程级别
pidstat -p 25555 1 3 -u -t

# 也能够监控 io
# -p 指定过程 id 每秒钟采样一次,一共采样三次 - d 示意对 io 的监控 -t 参数将监控细化到线程级别
pidstat -p 25555 1 3 -d -t 

# 也能够内存
# -p 指定过程 id 每秒钟采样一次,一共采样三次 - r 示意对内存的监控 -t 参数将监控细化到线程级别
pidstat -p 25555 1 3 -r -t 

free 命令

显示内存使用率

free

选项
-m 示意以 MB 为单位显示
-s  每隔几秒更新一次显示

应用 free -h 能够展现为应用 K 或 M 或 G 为单位

第一行是内存信息:total 示意总内存数,used 示意曾经应用的,free 示意闲暇的,shared 示意多个过程共享的,buffers 示意缓冲内存数,cached 示意缓存内存数

第二行是缓冲缓存信息:-/buffers/cache(正在应用的) 相当于 used-buffers-cached,+/buffers/cache(可用的内存) 相当于 free+buffers+cached

如何回收 buff/cache

echo 1 > /proc/sys/vm/drop_caches # 仅革除页面缓存
echo 2 > /proc/sys/vm/drop_caches # 革除目录项和 inode
echo 3 > /proc/sys/vm/drop_caches # 革除页面缓存、目录项以及 inode
第三行是分区信息:total 是 swap 的总数,used 是曾经应用的,free 是闲暇的,当下面提到的 +buffers/cache 示意的可用内存都已应用完,新的读写申请过去后,会把内存中的局部数据写入磁盘,从而把磁盘的局部空间当做虚拟内存来应用

如果 swap 内存应用过多,则阐明物理内存曾经不够用了,操作系统将本应该物理内存存储的一部分内存页调度到磁盘上,以腾出足够的空间给以后的过程应用。当其余过程须要运行时,在从磁盘将内存的页调度到物理内存中,以复原过程的运行。这个调度的过程,则会产生 swap IO,如果 swap IO 较为频繁,会影响零碎的性能,能够应用 vmstat 来查看 swap IO 的状况

能够配合 vmstat 来察看 swap 的 IO 状况

查看 CPU/ 内存信息

在 /proc 文件夹中有 cpuinfo 和 meminfo 能够查看 CPU 和内存信息

uptime 命令

显示零碎运行了多长时间

uptime
# 零碎以后工夫、零碎运行了多长时间、有多少用户正在应用该零碎、零碎每隔 1 分钟、5 分钟、15 分钟的均匀负载
# 16:49:00 up 13 days, 23:15,  2 users,  load average: 0.01, 0.04, 0.04

sar 命令

显示系统活动报告,能够全面获取零碎的 CPU、运行队列、磁盘 IO、分页、内存、CPU 中断、网络等性能数据

查看网络运行状态

# sar [options] [-o filename] [interval] [count]
# - n 示意汇报网络情况
# DEV 示意查看各个网卡的网络流量
# 第一个 1 示意每一秒抽样一次,第二个 1 示意总共抽取 1 次
sar -n DEV 1 1
Linux 3.10.0-1160.59.1.el7.x86_64       10/28/2022      _x86_64_    (2 CPU)

11:51:57 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:51:58 AM      eth0     41.00     43.00      6.95      7.87      0.00      0.00      0.00
11:51:58 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth0     41.00     43.00      6.95      7.87      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

# lo 示意本地回环网络,eth0 示意网卡     rxpck/ s 示意每秒接管数据包数量   txpck/ s 示意每秒收回数据包数量    rxkB/ s 示意每秒接管的字节数    txkB/ s 示意每秒收回的字节数   rxcmp/ s 示意每秒收到的压缩包数量   txcmp/ s 示意每秒收回的压缩包数量 rxmcst/ s 示意每秒收到的播送包数量

这里要留神一下,如果 rxpck/ s 数值大于 4000,或者 rxkB/ s 大于 5000 的时候,须要察看一下是否有异样,流量有些高

也能够查看某一天的网卡流量

# sa21 是文件名
sar -n DEV -f /var/log/sa/sa21

查看均匀负载

sar -q 10 3

03:57:28 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
03:57:38 PM         0      1082      0.06      0.13      0.27         0
03:57:48 PM         1      1082      0.05      0.12      0.27         0
03:57:58 PM         0      1082      0.04      0.12      0.26         0
Average:            0      1082      0.05      0.12      0.27         0

runq-sz:运行队列的长度
plist-sz:过程列表中的过程和线程数
ldavg-1:最近 1 分钟的 CPU 均匀负载
ldavg-5:最近 5 分钟的 CPU 均匀负载
ldavg-15:最近 15 分钟的 CPU 均匀负载

查看 CPU 使用率

sar -u 10 3


03:56:33 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:56:43 PM     all      0.63      0.00      0.23      0.00      0.00     99.15
03:56:53 PM     all      0.91      0.00      0.35      0.00      0.00     98.74
03:57:03 PM     all      2.03      0.00      0.45      0.03      0.00     97.49
Average:        all      1.19      0.00      0.34      0.01      0.00     98.46

查看某个 CPU 运行负载,程序应用了单线程,可能会有整体 CPU 使用率不高,然而某个 CPU 飚满的状况

# CPU 是从 0 开始计数的,1 示意的是第二个 CPU
sar -P 1 3 5

查看零碎磁盘状况

sar -d 3 5

查看内存应用状况

sar -r 3 5

选项

  • -A 显示零碎所有资源设施 (CPU、内存、磁盘) 的运行状况
  • -u 显示零碎所有 CPU 在采样工夫内的负载状态
  • -P 显示以后零碎中指定 CPU 的应用状况
  • -d 显示零碎所有硬盘设施在采样工夫内的应用状况
  • -r 显示零碎内存在采样工夫内的应用应用状况
  • -b 显示缓冲区在采样工夫内的应用状况
  • -v 显示过程、文件、节点和锁表状态
  • -n 显示网络运行状态。参数后边可跟 DEV、EDEV、SOCK、FULL。DEV 显示网络接口信息;EDEV 显示网络谬误的统计信息;SOCK 显示套接字信息;FULL 显示前三个参数的所有信息
  • -q 显示运行队列的大小,与零碎过后的均匀负载雷同
  • -R 显示过程在采样工夫内的流动状况
  • -y 显示终端设施在采样工夫内的流动状况
  • -w 显示零碎替换流动在采样工夫内的状态
  • -o filename 示意将命令后果以二进制格局寄存在文件中
  • interval 采样工夫距离
  • count 采样次数

lsmod 命令

查看已载入零碎的模块,是 list modules 的缩写,其查看的是 /prco/modules 中的内容

lsmod

# 展现的内容,第一列为模块的名称;第二列为模块的大小;第三列为依赖模块的个数,第四列为依赖模块的内容
drm                   303102  3 ttm,drm_kms_helper,cirrus

https://zhhll.icu/2021/linux/ 日常治理 / 系统资源命令 /

本文由 mdnice 多平台公布

正文完
 0