-
磁盘使用率
监控磁盘使用率有两个目的:第一个目的与应用有关。如果应用正在做大量的磁盘 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 饱和度 在做性能压测的时候,最关键看网络接口使用率和饱和度。
小结:
-
对基于网络的应用来说,务必要监控网络以确保它不是瓶颈
-
往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐量太低),也可能是因为写入了太多数据(吞吐量太高)
-
近期热议
推荐标签 标签
-
jQuery
63 引用 • 134 回帖 • 733 关注
jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。
-
V2EX
16 引用 • 236 回帖 • 257 关注
V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。
-
FreeMarker
23 引用 • 20 回帖 • 466 关注
FreeMarker 是一款好用且功能强大的 Java 模版引擎。
-
InfluxDB
2 引用 • 94 关注
InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。
-
Docker
495 引用 • 931 回帖
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
-
Lute
29 引用 • 202 回帖 • 29 关注
Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。
-
Netty
49 引用 • 33 回帖 • 37 关注
Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。
-
分享
248 引用 • 1794 回帖 • 1 关注
有什么新发现就分享给大家吧!
-
Office
5 引用 • 34 回帖
Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。
-
SQLite
5 引用 • 7 回帖 • 2 关注
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。
-
DNSPod
6 引用 • 26 回帖 • 529 关注
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
-
OneDrive
2 引用
-
V2Ray
1 引用 • 15 回帖
-
Latke
71 引用 • 535 回帖 • 832 关注
Latke 是一款以 JSON 为主的 Java Web 框架。
-
锤子科技
4 引用 • 31 回帖 • 1 关注
锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。
-
Vim
29 引用 • 66 回帖 • 1 关注
Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。
-
钉钉
15 引用 • 67 回帖 • 277 关注
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
-
JVM
180 引用 • 120 回帖 • 2 关注
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
-
Ubuntu
127 引用 • 169 回帖
Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。
-
深度学习
54 引用 • 44 回帖 • 1 关注
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
-
Swift
36 引用 • 37 回帖 • 548 关注
Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。
-
电影
122 引用 • 608 回帖
这是一个不能说的秘密。
-
反馈
121 引用 • 907 回帖 • 273 关注
Communication channel for makers and users.
- B3log
-
TGIF
291 引用 • 4495 回帖 • 654 关注
Thank God It's Friday! 感谢老天,总算到星期五啦!
-
Sym
524 引用 • 4601 回帖 • 706 关注
-
RESTful
30 引用 • 114 回帖 • 6 关注
一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于