-
磁盘使用率
监控磁盘使用率有两个目的:第一个目的与应用有关。如果应用正在做大量的磁盘 I/O 操作,那 I/O 就很容易称为瓶颈;第二个目的是即使预计应用不会有很高的 I/O,有助于监控系统是否在进行内存交换。
想了解何时磁盘 I/O 是瓶颈非常困难,因为这取决于应用的行为。如果应用往磁盘写数据时,没有有效的缓冲,磁盘 I/O 的统计数据就会非常低。但是,如果应用执行的 I/O 超过了磁盘的承载,磁盘 I/O 的统计数据就会非常高。这两种情形的性能都需要提升。
这是 Linux 系统 iostat 的部分输出:
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% 表示设备已经接近满负荷运行了
小结
-
对于所有应用来说,监控磁盘使用率非常重要。即便不直接写磁盘的应用,系统交换仍然会影响它们的性能。
-
写入磁盘的应用遇到瓶颈,是因为写入数据的效率不高(吞吐量太低),或者是因为写入太多数据(吞吐量太高)
-
-
网络使用率
如果应用运行时需要网络,比如 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 的输出
字段名 字段名解释 Int 网络接口设备名 rKB/s 每秒读取 kb 数 wKB/s 每秒写入 kb 数 rPk/s 每秒读取的包数 wPk/s 每秒写入的包数 rAvs 每次读取平均字节 wAvs 每次写入平均字节 %Util 网络接口使用率 Sat 饱和度 在做性能压测的时候,最关键看网络接口使用率和饱和度。
小结:
-
对基于网络的应用来说,务必要监控网络以确保它不是瓶颈
-
往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐量太低),也可能是因为写入了太多数据(吞吐量太高)
-
近期热议
推荐标签 标签
-
Redis
284 引用 • 248 回帖 • 1 关注
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。
-
SendCloud
2 引用 • 8 回帖 • 508 关注
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
-
Gzip
9 引用 • 12 回帖 • 179 关注
gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
-
LeetCode
209 引用 • 72 回帖
LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!
-
JSON
53 引用 • 190 回帖
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。
- Solo
-
负能量
89 引用 • 1251 回帖 • 392 关注
上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)
-
Windows
229 引用 • 476 回帖
Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
-
新人
52 引用 • 228 回帖 • 1 关注
让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
新手上路,请谨慎驾驶! -
FreeMarker
23 引用 • 20 回帖 • 466 关注
FreeMarker 是一款好用且功能强大的 Java 模版引擎。
-
Chrome
63 引用 • 289 回帖
Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
-
代码片段
196 引用 • 1399 回帖
代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。
用户在该标签下分享代码片段时需在帖子标题前添加
[css]
或[js]
用于区分代码片段类型。 -
友情链接
24 引用 • 373 回帖
确认过眼神后的灵魂连接,站在链在!
-
Typecho
12 引用 • 67 回帖 • 445 关注
Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。
-
周末
14 引用 • 297 回帖
星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。
-
SOHO
7 引用 • 55 回帖 • 2 关注
为成为自由职业者在家办公而努力吧!
-
Jenkins
54 引用 • 37 回帖
Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。
-
Q&A
10070 引用 • 45749 回帖 • 67 关注
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
-
创业
82 引用 • 1395 回帖
你比 99% 的人都优秀么?
-
GitHub
209 引用 • 2040 回帖
GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。
-
AngularJS
12 引用 • 50 回帖 • 522 关注
AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。
-
IDEA
181 引用 • 400 回帖
IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
-
jQuery
63 引用 • 134 回帖 • 732 关注
jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。
-
Java
3201 引用 • 8217 回帖 • 1 关注
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
-
外包
26 引用 • 233 回帖 • 3 关注
有空闲时间是接外包好呢还是学习好呢?
- 30Seconds
-
小薇
35 引用 • 468 回帖 • 768 关注
小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。
由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于