文档章节

Java性能优化权威指南(1):操作系统性能监控

ihaolin
 ihaolin
发布于 2014/10/13 20:38
字数 1143
阅读 332
收藏 5

操作系统性能监控

  • 找到性能问题的第一步是监控应用的行为

定义

  • 性能监控是一种以非侵入方式收集或查看应用在运行性能数据的活动。
  • 性能分析是一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性,通常在测试,开发环境中进行。
  • 性能调优是一种改善应用响应性或吞吐量而更改参数,源代码或属性配置的活动。

CPU使用率

  • 大多数操作系统的CPU使用率分为用户态CPU使用率系统态CPU使用率
  • 用户态CPU使用率指应用执行程序代码占用总CPU时间的百分比,系统态CPU使用率指应用执行操作系统调用的时间占总CPU时间的百分比。
  • 理想情况下,应用达到最高性能和扩展性时,它的系统CPU使用率为0%。

命令行监控CPU使用率:Linux

  • 通过vmstat监控所有虚拟处理器的CPU使用率, us为用户态CPU使用率, sy为系统态CPU使用率, id则为空闲,wa为等待IO百分比, st为虚拟CPU等待真实CPU百分比:

       

  • 我们也可以通过mpstat查看监控每个虚拟处理器的CPU使用率:

       

              

  • 通过top命令不仅包括CPU使用率也包括进程统计数据和内存使用率:

       

CPU调度程序运行队列

  • 除CPU使用率外,监控CPU调度程序运行队列对于分辨系统是否满负荷也有重要意义。
  • 一般性的指导原则:如果很长一段时间内,运行队列的长度一直都超过虚拟处理器个数的1倍,就需要关注了,只是暂时还不需要立刻采取行动。如果在很长一段时间里,运行队列的长度达到虚拟处理器个数的3~4倍或更高,则需要立刻引起注意或采取行动。

监控CPU调度程序运行队列:Linux

  • 可通过vmstat监控运行队列长度, 第一列即是运行队列长度,值是运行队列中轻量级进程的实际数量。

                       

内存使用率

  • 系统在进行页面交换或使用虚拟内存时,Java应用或JVM会表现出明显的性能问题。

监控内存使用率:Linux

  • Linux上可以用vmstat输出中的free列监控页面交换,也可以用其他方法例如top命令或/proc/meminfo文件来监控。
  • vmstat中free列显示可用的空闲内存,si和so分别表示内存页面换入和换出的量:

       

监控锁竞争:Linux

  • Linux上可以使用systat包中的pidstat命令监控锁竞争。
  • 对于一般性原则,对于java应用来说,如果让步式上下文切换占去它5%或更多可用时钟周期时,说明它可能遇到了锁竞争,即便只占到3%~5%也值得进一步调查。
  • 这是对测试服务器中的一个java进程的监控,cswch/s为让步式切换数/s,nvcswch/s为抢占式切换数/s: 

       

  • 计算让步上下文切换占去的时钟周期百分比公式:
上下文切换数 / (CPU核数) * 80000 / CPU频率(Hz)
如上面的计算结果为:
10 / 2 * 80000 / 2 130 000 000(CPU为2.13GHz)
  • 大家还可以使用Lmbench工具监测CPU上下文切换信息。

网络I/O使用率

监控网络I/O使用率:Linux

  • Linux上我们可以nicstat工具监控网络使用率:

       

# 各列含义
Int: 网络接口名
rKb/s: 每秒读取的KB数
wKb/s: 每秒写入的KB数
rPk/s: 每秒读取的包数
wPk/s: 每秒写入的包数
rAvs:  每次读取的平均字节
wAvs:  每次写入的平均字节
%Util: 网络接口使用率
Sat:   饱和度

磁盘I/O使用率

  • Linux下可用iostat工具监控磁盘I/O:

       

  • 改进磁盘I/O使用率的策略:

       1. 更快的存储设备;

       2. 文件系统扩展到多个磁盘;

       3. 操作系统调优使得可以缓存大量的文件系统数据结构。

其他命令行工具

  • Linux下可以使用sar命令进行长时间的系统监控历史信息收集。


© 著作权归作者所有

ihaolin
粉丝 263
博文 164
码字总数 106524
作品 4
朝阳
高级程序员
私信 提问
透视宝Java深度监控 有奖体验

应用程序一出错,你就抓狂。 Java作为应用最广泛的程序设计语言之一,怎可少得了一个监控。 透视宝Java监控全面开放试用,不用你就亏了! 活动详情 1、免费申请入口:http://cloudwise.mikecr...

cloudwiseAPM
2015/10/21
1K
6
从Java小白到架构师必须要看的书籍,真正的“武林秘籍”!

少年,我看你骨骼精奇,将是未来万中无一的IT精英,很是适合学JAVA。维护世界和平就看你的了,我这里有能让你成为IT精英的办法!还不来看看! 基础类 1、《Thinking in Java》,入门第一位是...

启示录是真的
2018/05/25
0
0
岁月划过生命线(2016 年终总结 -季度之星)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanqing280441589/article/details/54862696 -季度之星 标签 : coder 年假结束, 明天就要回到杭州, 回到我f...

菜鸟-翡青
2017/02/04
0
0
一个忙碌架构师的Java后端书架-2018

作者: 江南白衣 from 春天的旁边 Java后端开发,性能调优,唯品会基础架构,微服务实践的日常。 公众号:春天的旁边 见书单如面。 在这份书单里,我是这么一个同学:关心Java,关心架构,对...

Java高级架构
2018/09/07
0
0
web前端、c++、项目管理、java、php书籍10-40/本,转让

本人因转行,又因经济困难,所以转让一下书籍。按标价出售,人在北京。联系qq:602505 可在东城区、中关村、回龙观等地当面交易。 书新旧程度全部在9成新以上。 点击书名查看书籍介绍和原价。...

匿名网友
2011/02/24
1K
17

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
11分钟前
4
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
35分钟前
2
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
39分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
44分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
50分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部