实战java虚拟机
Linux下的性能监控工具
显示系统整体资源使用情况——top命令
linux公社-top详解
top命令是linux下常用的性能工具,它能够实时的显示系统中各个进程的资源占用情况。
top - 23:30:07 up 14 min, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.0%id, 0.3%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1012352k total, 214656k used, 797696k free, 17092k buffers
Swap: 4128748k total, 0k used, 4128748k free, 85228k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2069 dmtsai 20 0 98.0m 1824 844 S 0.3 0.2 0:00.48 sshd
2169 dmtsai 20 0 15036 1208 944 R 0.3 0.1 0:00.19 top
1 root 20 0 19356 1540 1228 S 0.0 0.2 0:01.50 init
top命令输出分为两个部分:前半部分是系统统计信息,后半部分是进程信息。
- 第1行:任务队列信息,等同于uptime命令:
top - 23:30:07 up 14 min, 1 user, load average: 0.00, 0.00, 0.00
//23:30:07 系统当前时间
//up 14 min 系统运行时间,未重启的时间,时间越长系统越稳定。 格式:up xx days, HH:MM
//1 user 系统用户数
//load average 系统平均负载,即任务队列的平均长度。 三个值表示最近1,5,15分钟的系统平均负载
- 第2行:进程统计信息
Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie
//进程总数 正在运行进程数 睡眠进程数 停止进程数 僵尸进程数
- 第3行:cpu统计信息
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
//us (user)用户空间CPU占用率
//sy (system)内核空间CPU占用率
//ni (nice)用户进程空间改变过优先级的进程CPU的占用率
//id (idle)空间CPU占用率
//wa (iowait)等待输入输出的CPU时间百分比
//hi CPU服务于硬件中断所耗费的时间总额
//si CPU服务于软件中断所耗费的时间总额
//st Steal time 虚拟机被hypervisor偷去的CPU时间
- 第4行:内存相关信息
Mem: 1012352k total, 214640k used, 797712k free, 17148k buffers
//总内存 - 使用内存 - 空闲内存 - 用作内核缓存的内存量
- 第5行:Swap 交换分区相关信息
Swap: 4128748k total, 0k used, 4128748k free, 85232k cached
//交换区总量 - 使用的交换区总量 - 空闲交换区 - 缓冲的交换区总量
- 第二部分:进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 S 0.3 0.0 0:00.91 events/0
// - A: PID = (Process Id) 进程Id;
// - E: USER = (User Name) 进程所有者的用户名;
// - H: PR = (Priority) 优先级
// - I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级
// - O: VIRT = (Virtual Image (kb)) 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
// - Q: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
// - T: SHR = (Shared Mem size (kb)) 共享内存大小,单位kb
// - W: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
// - K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比
// - N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比
// - M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒
// - X: COMMAND = (Command name/line) 命令名/命令行
监控内存和CPU——vmstat命令
linux命令大全
vmstat可以统计CPU,内存使用情况、swap使用情况等。vmstat可以指定周期和次数:
- Procs
- r : 等待运行的进程数。如果等待运行的进程数越多,意味着CPU非常繁忙。另外,如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。
- b: 处在非中断睡眠状态的进程数。意味着进程被阻塞。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等),当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。
- Memory (单位:KB)
- swapd: 已使用的虚拟内存大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swapd不为0,并不意味物理内存吃紧,如果swapd没变化,si、so的值长期为0,这也是没有问题;
- free: 空闲内存
- buff: 用来做buffer(缓存,主要用于块设备缓存)的内存数,
- cache: 用来做cache(缓存,主要用于缓存文件)的内存
- swap (单位:KB/秒。)
- si: 每秒从交换区写到内存的大小,由磁盘调入内存。
- so: 每秒写入交换区的内存大小,由内存调入磁盘。
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so, 如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
- io (单位:块/秒,现在的Linux版本块的大小为1kb)
- bi: 每秒读取的块数
- bo: 每秒写入的块数
- system
- in:每秒中断数,包括时钟中断。
- cs:每秒上下文切换数。
- CPU: 详见TOP命令,cpu部分
** 监控IO使用——iostat命令**
iostat命令被用于监视系统输入输出设备和CPU的使用情况。
- tps: 该设备美妙的传输次数
- Blk_read/s: 每秒读取的block数
- Blk_wrtn/s: 每秒写入的block数
- Blk_read: 读取的block总数
- Blk_wrtn: 写入的block总数
iostat默认单位为block,如果想使用KB单位则使用命令:iostat -k
其他命令
- 内存使用情况命令:
free -m
- 硬盘使用情况 :
df -h
多功能诊断器——pidstat工具
引用pidstat详解
pidstat的强大之处在于,它不仅可以监视进程的性能情况,也可以监视线程的性能情况。
可以用多种命令来获取java的进程id:如ps -ef|grep 'java'
;
然后使用pidlist,查看某一个进程的CUP使用情况
[dmtsai@study ~]$ pidstat -p 2812 -u 1 10
//-p 2812 : 监控2812进程
//-u 1 10 : -u表示监控cpu, 监控周期1秒,监控10次 ; //-r 监控内存 , -d:监控io
- -u cpu使用情况
- %guest:进程在虚拟机占用cpu的百分比
- %CPU:进程占用cpu的百分比
- CPU:处理进程的cpu编号
- -u:内存使用情况
- minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
- majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
- VSZ: 该进程使用的虚拟内存(以kB为单位)
- RSS: 该进程使用的物理内存(以kB为单位)
- %MEM: 该进程使用内存的百分比
- -d :IO统计显示以下信息
- kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)
- kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)
- kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
Windows下的性能监控工具(略)
- windows自带——任务管理器
- windows自带——perfmon
- process explorer ——加强版任务管理器
- pslist命令