常用监控命令
top
$top
top - 09:14:56 up 264 days, 20:56, 1 user, load average: 0.02, 0.04, 0.00
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.2%st
Mem: 377672k total, 322332k used, 55340k free, 32592k buffers
Swap: 397308k total, 67192k used, 330116k free, 71900k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 2856 656 388 S 0.0 0.2 0:49.40 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 7:15.20 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
-
- 第一行
-
- 09:14:56 : 系统当前时间
- 264 days, 20:56 : 系统开机到现在经过了多少时间
- 1 users : 当前2用户在线
- load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
-
- 第二行
-
- Tasks:任务;
- 87 total:很好理解,就是当前有87个任务,也就是87个进程。
- 1 running:1个进程正在运行
- 86 sleeping:86个进程睡眠
- 0 stopped:停止的进程数
- 0 zombie:僵死的进程数
-
- 第三行
-
- Cpu(s):表示这一行显示CPU总体信息
- 0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
- 0.7%sy:内核占用CPU时间百分比
- 0.0%ni:改变过优先级的进程占用CPU的百分比
- 99.3%id:空闲CPU时间百分比
- 0.0%wa:等待I/O的CPU时间百分比
- 0.0%hi:CPU硬中断时间百分比
- 0.0%si:CPU软中断时间百分比
- 注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
-
- 第四行
-
- Men:内存的意思
- 8175320kk total:物理内存总量
- 8058868k used:使用的物理内存量
- 116452k free:空闲的物理内存量
- 283084k buffers:用作内核缓存的物理内存量
-
- 第五行
-
- Swap:交换空间
- 6881272k total:交换区总量
- 4010444k used:使用的交换区量
- 2870828k free:空闲的交换区量
- 4336992k cached:缓冲交换区总量
-
- 进程信息
-
- 再下面就是进程信息:
- PID:进程的ID
- USER:进程所有者
- PR:进程的优先级别,越小越优先被执行
- NInice:值
- VIRT:进程占用的虚拟内存
- RES:进程占用的物理内存
- SHR:进程使用的共享内存
- S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
- %CPU:进程占用CPU的使用率
- %MEM:进程使用的物理内存和总内存的百分比
- TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
- COMMAND:进程启动命令名称
- 使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多; 注:通过”shift + >”或”shift + <”可以向右或左改变排序列 如果只需要查看内存:可用free命令。只查看uptime信息(第一行),可用uptime命令;
- 在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况
- top -Hp 查看指定进程 可通过Threads判断线程数
top -Hp 11757
top - 19:36:11 up 266 days, 2:43, 1 user, load average: 0.31, 0.18, 0.13
Threads: 115 total, 0 running, 115 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8010424 total, 733756 free, 5278396 used, 1998272 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2421932 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11767 admin 20 0 8204136 4.7g 18876 S 0.3 62.0 32:55.74 java
11757 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.00 java
11762 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:32.20 java
11763 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:17.34 java
11764 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:17.36 java
11765 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:17.31 java
11766 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:17.39 java
11768 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:02.17 java
11770 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:02.90 java
11771 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:04.30 java
11772 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:06.85 java
11773 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.16 java
11774 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:18.34 java
11796 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 2:27.85 java
11797 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.62 java
11798 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:01.35 java
11799 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.00 java
11800 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.00 java
11801 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 1:32.81 java
11802 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 1:31.72 java
11803 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:22.92 java
11804 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.19 java
11805 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:01.67 java
11806 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:01.16 java
11807 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.00 java
11808 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 3:57.39 java
11824 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.24 java
11855 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:03.40 java
11856 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:01.75 java
11858 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:03.75 java
11868 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:11.62 java
11882 admin 20 0 8204136 4.7g 18876 S 0.0 62.0 0:00.00 java
free
- 查询可用内存
- 区分buffer 和 cache
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.
uptime
uptime
17:38:53 up 265 days, 46 min, 1 user, load average: 0.17, 0.09, 0.12
- 系统时间 运行时间 连接数(每个终端算一个连接) 1,5,15 分钟的系统平均负载(运行队列中的平均进程数)
load average
- 3个数字的含义:分别表示系统在过去1分钟、5分钟、15分钟内运行进程队列中的平均进程数量。运行队列,没有等待IO,没有WAIT,没有KILL的进程通通都进这个队列。
-
用交通流量来做类比
-
1、单核CPU - 单车道 - 数字在0.00-1.00之间正常
- 0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。
- 1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。
- 1.00-* 表示路况不太好了,如果到达2.00表示有桥上车辆一倍数目的车辆正在等待。这种情况你必须进行检查了。
-
2、多核CPU - 多车道 - 数字/CPU核数 在0.00-1.00之间正常
- 多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。
- 单核负载在0.7以下是安全的,超过0.7就需要进行优化了。
- 看5分钟和15分钟的比较好,即后面2个数字
- 获得CPU核心数目 grep 'model name' /proc/cpuinfo | wc -l
-
vmstat
- 监视内存使用情况,vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。
- 可对操作系统的虚拟内存、进程、IO 读写、CPU 活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进 行深入分析
- 可观察每秒上下文切换数
vmstat 2 20
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 731272 169216 1833540 0 0 1 7 0 0 2 1 98 0 0
0 0 0 731256 169216 1833540 0 0 0 36 742 1312 0 0 100 0 0
0 0 0 733284 169216 1833540 0 0 0 38 2074 2814 7 2 91 0 0
0 0 0 733036 169216 1833540 0 0 0 0 724 1293 0 0 100 0 0
1 0 0 731052 169216 1833540 0 0 0 48 1295 1954 4 1 96 0 0
0 0 0 731052 169216 1833540 0 0 0 0 720 1301 0 0 100 0 0
0 0 0 731052 169216 1833540 0 0 0 0 757 1323 0 0 100 0 0
0 0 0 730804 169216 1833548 0 0 0 36 867 1402 0 0 99 0 0
0 0 0 730804 169216 1833548 0 0 0 76 774 1332 0 0 100 0 0
0 0 0 731052 169216 1833552 0 0 0 70 1442 2084 4 1 95 0 0
1 0 0 727732 169216 1833552 0 0 0 24 867 1429 0 0 99 0 0
0 0 0 731176 169216 1833552 0 0 0 16 1262 1892 3 1 96 0 0
0 0 0 731176 169216 1833552 0 0 0 8 769 1300 0 0 100 0 0
0 0 0 731176 169216 1833552 0 0 0 26 769 1329 0 0 100 0 0
0 0 0 731176 169216 1833552 0 0 0 4 802 1364 0 0 100 0 0
0 0 0 731176 169216 1833552 0 0 0 0 693 1272 0 0 100 0 0
0 0 0 730680 169216 1833552 0 0 0 16 1341 2010 4 1 96 0 0
0 0 0 730680 169216 1833552 0 0 0 26 1049 1592 1 1 99 0 0
0 0 0 731548 169216 1833552 0 0 0 16 1341 1980 4 1 95 0 0
0 0 0 731532 169216 1833552 0 0 0 22 728 1304 0 0 100 0 0
- Procs(进程):
-
- r: 运行队列中进程数量
- b: 等待IO的进程数量
- Memory(内存):
-
- swpd: 使用虚拟内存大小
- free: 可用内存大小
- buff: 用作缓冲的内存大小
- cache: 用作缓存的内存大小
- Swap:
-
- si: 每秒从交换区写到内存的大小
- so: 每秒写入交换区的内存大小
- IO:(现在的Linux版本块的大小为1024bytes)
-
- bi: 每秒读取的块数
- bo: 每秒写入的块数
- system:
-
- in: 每秒中断数,包括时钟中断
- cs: 每秒上下文切换数
- CPU(以百分比表示)
-
- us: 用户进程执行时间(user time)
- sy: 系统进程执行时间(system time)
- id: 空闲时间(包括IO等待时间)
- wa: 等待IO时间
pidstat
- 用于细致地观察进程,可监控 CPU、IO、内存。
- 示例:-p 指定进程,-u 表示监控 CPU(-t 表示监控线程,-d 表示监控磁盘 io 的情况),每秒采样 1 次,共采样 4 次。
- -u
pidstat -p 11757 -u 1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly) 06/02/2020 _x86_64_ (4 CPU)
07:59:01 PM UID PID %usr %system %guest %CPU CPU Command
07:59:02 PM 1000 11757 1.00 0.00 0.00 1.00 3 java
07:59:03 PM 1000 11757 0.00 0.00 0.00 0.00 3 java
07:59:04 PM 1000 11757 0.00 0.00 0.00 0.00 3 java
07:59:05 PM 1000 11757 1.00 0.00 0.00 1.00 3 java
07:59:06 PM 1000 11757 0.00 0.00 0.00 0.00 3 java
07:59:07 PM 1000 11757 0.00 0.00 0.00 0.00 3 java
07:59:08 PM 1000 11757 2.00 0.00 0.00 2.00 3 java
07:59:09 PM 1000 11757 0.00 0.00 0.00 0.00 3 java
07:59:10 PM 1000 11757 1.00 0.00 0.00 1.00 3 java
- -r 内存使用情况统计
pidstat -p 11757 -r 1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly) 06/02/2020 _x86_64_ (4 CPU)
07:59:35 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
07:59:36 PM 1000 11757 0.00 0.00 8205164 4963196 61.96 java
07:59:37 PM 1000 11757 2.00 0.00 8205164 4963196 61.96 java
07:59:38 PM 1000 11757 1.00 0.00 8205164 4963196 61.96 java
07:59:39 PM 1000 11757 0.00 0.00 8205164 4963196 61.96 java
07:59:40 PM 1000 11757 6.00 0.00 8205164 4963196 61.96 java
07:59:41 PM 1000 11757 0.00 0.00 8205164 4963196 61.96 java
07:59:42 PM 1000 11757 2.00 0.00 8205164 4963196 61.96 java
07:59:43 PM 1000 11757 2.00 0.00 8205164 4963196 61.96 java
07:59:44 PM 1000 11757 0.00 0.00 8205164 4963196 61.96 java
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ: 该进程使用的虚拟内存(以kB为单位)
RSS: 该进程使用的物理内存(以kB为单位)
%MEM: 该进程使用内存的百分比
Command: 拉起进程对应的命令
- -d
pidstat -p 11757 -d 1 10
Linux 3.10.0-514.26.2.el7.x86_64 (spider-competitor-1.real.bj.aly) 06/02/2020 _x86_64_ (4 CPU)
07:59:58 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
07:59:59 PM 1000 11757 0.00 0.00 0.00 java
08:00:00 PM 1000 11757 0.00 0.00 0.00 java
08:00:01 PM 1000 11757 0.00 0.00 0.00 java
08:00:02 PM 1000 11757 0.00 0.00 0.00 java
08:00:03 PM 1000 11757 0.00 0.00 0.00 java
08:00:04 PM 1000 11757 0.00 0.00 0.00 java
08:00:05 PM 1000 11757 0.00 0.00 0.00 java
kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)
kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)
Command: 拉起进程对应的命令