文章目录

  • CPU
  • GNOME System Monitor
  • vmstat
  • mpstat
  • top
  • jstack
  • vmstat
  • 内存
  • 监控锁竞争
  • 网络 I/O 使用率
  • 磁盘I/O使用率


linux的一些监控命令

CPU

GNOME System Monitor

Linux上可以使用图形化工具 GNOME System Monitor( GNOME系统监视器,用 gnomesystem- monl tor命令启动)监控CPU使用率(在 Resources I页上部显示),如下图,显示该系统有2个虚拟处理器。虚拟处理器的数目与 Java API Runtime. availableProcessors)相匹配:一个4核CPU(关闭超线程)在 GNOME系统监视器中显示为4个CPU,JavaAPI Runtime, avai lableprocessors()报告为4个虚拟处理器。GNOME Svstem Monitore的 CPU Historyl区域,显示的是每个虚拟处理器在一段时期内的CPU使用率,毎条线代表一个虚拟处理器。 CPU History下方(指颜色块)显示的是系统发现的每个

虚拟处理器的当前CPU使用率

java监控服务器负载多少 java监控cpu_java

vmstat

java监控服务器负载多少 java监控cpu_性能_02


us是用户态CPU使用率

sy是系统台CPU使用率

id是空闲率或CPU可用率

mpstat

先执行一下命令安装sysstat:

yum install sysstat

然后执行 mpstat

java监控服务器负载多少 java监控cpu_java_03


usr 执行用户代码所用CPU时间的百分比

sys 执行内核代码所用CPU时间的百分比

iowait I/O等待时间的百分比

idle CPU空闲时间的百分比

top

使用top命令:

java监控服务器负载多少 java监控cpu_性能_04

jstack

使用jstack生成栈追踪信息信息,

java监控服务器负载多少 java监控cpu_cpu_05

vmstat

java监控服务器负载多少 java监控cpu_cpu_06

内存

可以使用vmstat中的free列
如上图,si和so分别表示内存页面换入和换出的量,free是空闲的内存。

监控锁竞争

pidstat -w -I -p 26139 5

其中,cswch是每秒钟的上下文切换,如果是一个3GHz的CPU每秒钟时钟周期数为3000000000,如果这边的cswch上下文切换为3500,那么每个虚拟处理器上下文切换为3500/2=1750,耗费的时钟周期为1750*80000 = 140000000.然后这个占整个cpu的140000000/3000000000 = 4.7%,让步时钟周期张勇3%~5%,说明Java应用正面临锁竞争。

java监控服务器负载多少 java监控cpu_java_07

网络 I/O 使用率

wget https://downloads.sourceforge.net/project/nicstat/nicstat-1.95.tar.gz

tar -zxvf nicstat-1.95.tar.gz

cd nicstat-1.95

cp Makefile.Linux Makefile

vi  Makefile 后修改 CFLAGS = $(COPT)

其中:

  • Int:网络接口设备名
  • rKb/s:每秒读取的KB数
  • wKb/s:每秒写入的KB数
  • rPk/s:每秒读取的包数
  • wPk/s:每秒写入的包数
  • rAv/s:每次读取的平均字节
  • wAvs:每次写入的平均字节数
  • %Util:网络接口使用率
  • Sat:饱和度

java监控服务器负载多少 java监控cpu_cpu_08


应用性能改进的考虑

单次读写数据量小而网络读写量大的应用会消耗大量的系统态CPU,产生大量的系统调用。对于这类应用,减少系统态CPU的策略是减少网络读写的系统调用。此外,使用非阻塞的 Java NIO而不是阻塞的java.net. Socket,减少处理请求和发送响应的线程数,也可以改善应用性能。

从非阻塞 socket中读取数据的策略是,应用在每次读请求时尽可能多地读取数据。同样,当往 socket中写数据时,每个写调用应该尽可能多地写。一些 Java NIO/框架包含了这些事件,例如Grizzly-项日(htps: grizzly.dev. java.net) Java NIO1框架也有助于简化客户端一服务器类型应用的开发。JDK提供的 Java NIO只是一种原始实现,很容易导致 Java APIE的误用而使应用性能变差,建议使用 Java NIO框架。

磁盘I/O使用率

使用iostat来监控磁盘使用率
在 Linux上安装可选包 sysstat才能使用iostat

iostat -xc 5

其中:

  • util:使用率
  • system:CPU使用率

java监控服务器负载多少 java监控cpu_java_09