Java性能优化之操作系统性能监控(一)

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使用率
在这里插入图片描述

vmstat

在这里插入图片描述
us是用户态CPU使用率
sy是系统台CPU使用率
id是空闲率或CPU可用率

mpstat

先执行一下命令安装sysstat:

yum install sysstat

然后执行 mpstat
在这里插入图片描述
usr 执行用户代码所用CPU时间的百分比
sys 执行内核代码所用CPU时间的百分比
iowait I/O等待时间的百分比
idle CPU空闲时间的百分比

top

使用top命令:
在这里插入图片描述

jstack

使用jstack生成栈追踪信息信息,
在这里插入图片描述

vmstat

在这里插入图片描述

内存

可以使用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应用正面临锁竞争。

在这里插入图片描述

网络 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:饱和度

在这里插入图片描述
应用性能改进的考虑
单次读写数据量小而网络读写量大的应用会消耗大量的系统态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使用率

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小丸子呢

致力于源码分析,期待您的激励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值