Java性能调优工具:Linux命令行工具

Linux平台式使用最为广泛的服务器平台之一,不少Java端程序都运行在类Linux平台下(入AIX、Solaris等)。不同的类linux操作系统之间的很多命令都非常相似,不少命令仅有一些细节上的差异。这篇文章主要记录用于linux平台下的性能手机和统计工具。

1. top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。
登录linux,直接输入: top 回车:

image.png

top命令的输出可以分为两部分:前半部分是系统统计信息,后半部分是进程信息

统计信息部分:

第1行是任务队列信息,他的结果等同于uptime命令。从左到右依次表示:系统当前时间(16:03:52)、系统运行时间(315 days, 12:44)、当前登录用户数(2 users)。最后的load average表示系统的平均负载,即任务队列的平均长度,这3个值分别表示1分钟(0.22)、5分钟(0.24)、15分钟0.23()到现在的平均值。

第2行是进程统计信息,分别有正在运行的进程数、睡眠进程数、停止的进程数、僵尸进程是。

第3行 是CPU统计信息,us表示用户空间CPU占用率、sy表示内核空间CPU占用率、ni表示用户进程空间改变过优先级的进程CPU占用率、id表示空闲CPU占用率、wa表示等待输入输出的CP时间百分比、hi表示硬件中断请求、si表示软件中断请求。

在Mem行中,从左到右,依次表示无力内存总量、已使用的物理内存、空闲物理内存、内核缓冲使用量。

Swap航依次表示交换区总量、空闲交换区大小、缓冲交换区大小。

进程信息:
top命令的第2部分是进程信息区,显示了系统内各个进程的资源使用情况。在这张表格中,可能出现的列及其含义如下:

  • PID:进程id
  • RUSER:real user name
  • PR:优先级
  • NI:nice值。负值表示高优先级,正值表示低优先级
  • VIRT:进程使用的虚拟内存总量,单位KB。
  • RES: 进程使用的、未被换出的物理内存大小、单位KB。
  • SHR: 共享内存大小,单位KB
  • S:进程状态。D表示不可中断的睡眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。
  • %CPU:上次更新到现在的CPU时间占用百分比
  • %MEM: 进程使用的物理内存百分比
  • TIME+: 进程使用的CPU时间总计,单位1/100秒
  • COMMAND: 命令名/命令行
    ……

top命令下使用的交互指令

  • top命令下按下 f 键:可以进行列的选择
  • o 键:可以更改列的显示顺序
  • h:显示帮助信息
  • k:终止一个进程
  • q:退出程序
  • c: 切换显示命令名称和完整命令行
  • M:根据驻留内存大小进行排序
  • P:根据CPU使用百分比大小进行排序
  • T:根据时间/累计时间进行排序

总结:使用top命令可以从宏观上观察系统各个进程对CPU的占用情况以及内存的使用情况。

2. sar命令

sar命令也是Linux系统中重要的性能监控工具之一,他可以周期性地对内存和CPU使用情况进行采样。基本语法如下:

sar  [ options ]  [   [  ] ]

interval和count分别表示采样周期和采样数量。options选项可以指定sar命令对那些性能数据进行采集(不同版本的sar命令,选项可能有所不同,可以通过sar-h命令插看).

  • -A: 所有报告的总和
  • -u: CPU利用率
  • -D:应该使用报告
  • -b: I/O的情况
  • -q: 查看队列长度
  • -r: 内存使用统计情况
  • -n: 网络信息统计
  • -o: 采样结果输出到文件

下例使用sar命令统计CPU使用情况,每秒钟采样一次,共计采样3次:

image.png

获取内存使用情况:

image.png

获取I/O信息:

image.png

总结:** sar命令可以查看I/O信息、内存信息以及CPU使用情况。**

3. vmstat命令

vmstat也是一款功能比较齐全的性能检测工具,他可以统计CPU、内存使用情况、swap使用情况等信息。和sar功能类似,vmstat也可以指定采样周期和采样次数。下例每妙采样一次,共计3次:

image.png

输出结果表解释如下:
Procs: r表示等待运行的线程数, b表示处在非中断睡眠状态的进程数
Memory: swpd表示虚拟内存使用情况,单位kb;free表示空闲内存,单位kb; buff表示被用来作为缓存的内存数,单位为kb。
Swap:si从磁盘交换到内存的交换页数量,单位为 快/秒; so表示从内存交换的磁盘的交换页数量,单位为 快/秒。
IO: bi表示发送到块设备的块数, bo表示从块设备接收到的块数
System:in表示每秒的中断数,包括时钟中断; cs表示每秒的上下文切换次数
CPU:us用户CPU使用时间; sy表示内核CPU系统使用时间; id表示空闲时间

总结:** vmstat工具可以查看内存、交互分区、I/O操作、上下文切换、时钟中断以及CPU的使用情况。**

4. 其他

另外对应还要推荐两个可以打印详细信息的性能检测工具:iostat、pidstat工具。

个人网站:relaxheart网

你可能感兴趣的:(Java性能调优工具:Linux命令行工具)