Java 性能调优工具箱之操作系统的工具和分析 (二)

本贴最后更新于 1628 天前,其中的信息可能已经水流花落
  1. 磁盘使用率

    监控磁盘使用率有两个目的:第一个目的与应用有关。如果应用正在做大量的磁盘 I/O 操作,那 I/O 就很容易称为瓶颈;第二个目的是即使预计应用不会有很高的 I/O,有助于监控系统是否在进行内存交换。

    想了解何时磁盘 I/O 是瓶颈非常困难,因为这取决于应用的行为。如果应用往磁盘写数据时,没有有效的缓冲,磁盘 I/O 的统计数据就会非常低。但是,如果应用执行的 I/O 超过了磁盘的承载,磁盘 I/O 的统计数据就会非常高。这两种情形的性能都需要提升。

    这是 Linux 系统 iostat 的部分输出:
    5dc8b1392b2f6b2b2d240c72.png

    avg-cpu 字段说明:

    字段名 字段名解释
    %user CPU 处在用户模式下的时间百分比
    %nice CPU 处在带 NICE 值的用户模式下的时间百分比
    %system CPU 处在系统模式下的时间百分比
    %iowait CPU 等待输入输出完成时间的百分比
    %steal 管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比
    %idle CPU 空闲时间百分比

    device 字段说明:

    字段名 字段名解释
    rrqm/s 每秒这个设备相关的读取请求有多少被 Merge 了(当系统调用需要读取数据的时候,VFS 将请求发到各个 FS,如果 FS 发现不同的读取请求读取的是相同 Block 的数据,FS 会将这个请求合并 Merge)
    wrqm/s 每秒这个设备相关的写入请求有多少被 Merge 了
    r/s 每秒向磁盘发起的读操作数
    w/s 每秒向磁盘发起的写操作数
    rMB/s 每秒读 M 字节数
    wMB/s 每秒写 M 字节数
    avgrq-sz 平均每次设备 I/O 操作的数据大小
    avgqu-sz 平均请求队列的长度,队列长度越短越好。
    await 平均每次设备 I/O 操作的等待时间 (毫秒),一般地,系统 I/O 响应时间应该低于 5ms,如果大于 10ms 就比较大了
    r_await 每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在 kernel 队列中等待的时间
    w_await 每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在 kernel 队列中等待的时间
    svctm 平均每次设备 I/O 操作的服务时间 (毫秒)(这个数据不可信)
    %util 一秒中有百分之多少的时间用于 I/O 操作,即被 IO 消耗的 CPU 百分比,一般地,如果该参数是 100% 表示设备已经接近满负荷运行了

    性能监控指标:

    • %iowait:如果该值较高,表示磁盘存在 I/O 瓶颈

    • await:一般地,系统 I/O 响应时间应该低于 5ms,如果大于 10ms 就比较大了

    • avgqu-sz:如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度

    • %util:一般地,如果该参数是 100% 表示设备已经接近满负荷运行了

    小结

    • 对于所有应用来说,监控磁盘使用率非常重要。即便不直接写磁盘的应用,系统交换仍然会影响它们的性能。

    • 写入磁盘的应用遇到瓶颈,是因为写入数据的效率不高(吞吐量太低),或者是因为写入太多数据(吞吐量太高)

  2. 网络使用率

    如果应用运行时需要网络,比如 Java EE 应用服务器,你也必须监控网络流量。网络使用率类似磁盘流量。应用可能没有充分利用网络所以带宽太低,或者写入某网络接口的总数据量超过了它所能处理得量。

    有许多开源和商业工具可以监控网络带宽。Unix 里一个受欢迎的命令行工具就是 nicstat,它可以显示每个网络接口的流量概要,包括接口的使用度。

    nicstat 工具的安装

    下载地址: https://sourceforge.net/projects/nicstat/

    下载后安装

    tar -zxvf nicstat-1.95.tar.gz
    cd nicstat-1.95/
    cp Makefile.Linux Makefile

    注意 :Makefile 里面默认是用 32 位系统下编译的,需要修改成 64 位。

    vi Makefile

    将 CFLAGS = (COPT) (CMODEL) 修改为 CFLAGS = $(COPT)

    make
    make install

    这是 Linux 系统 nicstat 的输出
    5dc8bebb38e8ae64946e6e43.png

    字段名 字段名解释
    Int 网络接口设备名
    rKB/s 每秒读取 kb 数
    wKB/s 每秒写入 kb 数
    rPk/s 每秒读取的包数
    wPk/s 每秒写入的包数
    rAvs 每次读取平均字节
    wAvs 每次写入平均字节
    %Util 网络接口使用率
    Sat 饱和度

    在做性能压测的时候,最关键看网络接口使用率和饱和度。

    小结:

    1. 对基于网络的应用来说,务必要监控网络以确保它不是瓶颈

    2. 往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐量太低),也可能是因为写入了太多数据(吞吐量太高)

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 网络
    128 引用 • 177 回帖 • 3 关注
  • 磁盘使用率
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
AutisticV5
简单很快乐,快乐很简单。 佛山

推荐标签 标签

  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • abitmean

    有点意思就行了

    23 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    313 引用 • 1667 回帖 • 1 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 594 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 559 关注
  • 倾城之链
    23 引用 • 66 回帖 • 102 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 245 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 589 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 635 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 2 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 25 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 45 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    84 引用 • 139 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 5 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 21 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    85 引用 • 1201 回帖 • 449 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 455 关注