四、性能分析-进程
一:监控进程
1、top 实时监控top; 查看系统**进程**的资源使用情况, 也可以查看线程 ;相关命令: 按f帮助,q退出,查看当前系统cpu使用率最高的4个进程: n 4 回车, n 0恢复 top命令默认3秒钟刷新一次数据: s 数字 我只想看某个进程下的线程资源使用情况: top -H -p pid值
字段含义解释:第一行:top - 21:28:23 up 1:30, 3 users load average: 0.00, 0.01, 0.05 :当前时间,系统运行时间,当前用户数(可能为一个用户),系统平均负载(1分钟,5分钟,15分钟)--(可通过3个负载高低判断负载是上升还是下降:第1个值小于第二值,现在系统负载正在下降,再过一段时间可能会恢复正常)
系统负载值,不等于cpu使用率值。因为系统的负载值,它主要由两部分组成: cpu的使用率 + io使用率;历史的经验,系统负载高低,与cpu的数量有一定关系。
第二行:Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie :进程概要信息,有多少进行,运行,休眠,停止,僵化(进程完成,但父进程无响应)
Tasks进程数:Threads: 可以按 H 来切换为线程 ;Task ,Thread 两个数字不相同, Thread数字大于Task数字, 因为 一个进程可能有多个线程
第三行:%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st :CPU 的概要信息–进程的属主是系统还是用户;按数字 1 可以看到cpu的数量, 核数
+ us:用户态使用cpu的时间占比---
+ sy: 系统态 在cpu的内核中进行计算消耗的时间占比
+ ni:优先级切换(更多进程优先级切换)
+ hi:hard interrupt 硬中断 中断会导致时间浪费,也会导致资源占用升高
+ si:soft interrupt 软中断
+ wa: wait 等待 等待资源
+ st: 管理者占用资源
+ id: 休闲
+ 以后,不要说系统负载值大于cpu数量,就一定负载高。
第四行:KiB Mem : 3880216 total, 3061680 free, 444332 used, 374204 buff/cache :系统内存状态–物理内存,总共多少内存,用了多少,空闲多少
第五行:KiB Swap: 4063228 total, 4063228 free, 0 used. 3207100 avail Mem :系统交互空间
+ buff/cache: 缓存
+ buffer是磁盘虚拟出来的一个缓冲区,用于内存**读取**磁盘数据时,加快读取速度
+ cache 缓存,存在内存、cpu中,
+ swap 交互分区 主要是用来,交换内存空间。它也是由磁盘虚拟而来,一般为内存的2倍
+ 任何一个程序启动,都会在内存中占用:虚拟内存核物理内存
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND :PID进程id USER进程的归属用户 PR优先级的级别 NI优先级的值,越低,优先级越高 http://testingpai.com/article/1645862095696
VIRT 虚拟内存 ,进程使用虚拟内存大小 默认是KB RES 物理内存大小 进程使用的物理内存大小 默认是KB SHR 共享内存大小 默认单位也是KB (这三个都是进程的内存相关数据,按小写e 可以切换单位)
S 进程的状态 %CPU 进程占用的cpu率 %MEM 进程使用men率 TIME+ 进程使用cpu的时间 COMMAND 进程名称
2、vmstat 这个命令是系统自带, 虚拟内存统计的缩写,可对虚拟内存、进程、cpu活动进行监控
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 3062760 2108 372176 0 0 19 1 24 42 0 0 100 0 0
字段展示:procs r : 数字 显示cpu中有多少个进程正在等待; 如果r列是数字,大于cpu核数,那么说明现在现在有大量的进程在等待cpu进行计算,现在可能出现了cpu不够用的情况。----cpu成了我们的性能瓶颈,此时,可能需要去增加cpu数量;或者减少运行的进程数。
b : 数字 现在有多少进程正在不可中断的休眠. 如果这个数字过大,就说明,资源不够用。
memory swapd , free,buff\buffer, cache
swap si 交换分区中的换入; so 交换分区中的换出
io bi 块设备的读 ;bo 块设备的写
system in interrupet cpu中断 数字 ; cs cpu上下文切换 数学
cpu us sy id wa st
3、其他命令:sysstat的工具包,这个工具包中带了很性能分析命令`yum install sysstat -y`
mpstat 查看cpu的相关数据
pidstat: 能看磁盘、内存、cpu的数据,主要看cpu的上下文数据
iostat: 看数据换入换出
sar : 主要用在网络相关数据的查看 https://www.cnblogs.com/howhy/p/6396437.html
二、探查进程
1. ps
ps 默认情况只显示当前控制台下属于当前用户的进程; ps -e 显示所有进程; ps -f 显示完整格式输; ps -ef 显示所有进程完整格式输出
字段含义:UID 启动进程的用户号; PID 进程的进程ID; PPID 父进程的进程号;C 进程生命周期中的CPU利用率;STIME 进程启动的系统时间;TTY 进程启动的终端设备;TIME 运行进程需要累积的CPU时间;CMD 启动的进程名称
三、结束进程
1.kill
kill ID(PID) 对进程属于当期属主或root用户,又是不生效,使用参数-s 支持其他信号:kill -s HUP 2209 (信号名,信号值)
killall 支持使用进程名,不支持PID,支持用通配符:killall http* 结束所有http开头的进程