-
磁盘使用率
监控磁盘使用率有两个目的:第一个目的与应用有关。如果应用正在做大量的磁盘 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 饱和度 在做性能压测的时候,最关键看网络接口使用率和饱和度。
小结:
-
对基于网络的应用来说,务必要监控网络以确保它不是瓶颈
-
往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐量太低),也可能是因为写入了太多数据(吞吐量太高)
-
近期热议
推荐标签 标签
-
单点登录
9 引用 • 25 回帖
单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
-
SOHO
7 引用 • 55 回帖 • 18 关注
为成为自由职业者在家办公而努力吧!
-
Elasticsearch
117 引用 • 99 回帖 • 223 关注
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
-
Linux
939 引用 • 940 回帖
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
-
PostgreSQL
22 引用 • 22 回帖 • 1 关注
PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。
-
酷鸟浏览器
3 引用 • 59 回帖 • 31 关注
安全 · 稳定 · 快速
为跨境从业人员提供专业的跨境浏览器 -
golang
497 引用 • 1387 回帖 • 294 关注
Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。
-
SQLServer
19 引用 • 31 回帖
SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。
-
Git
209 引用 • 358 回帖
Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
-
小说
28 引用 • 108 回帖
小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。
-
WiFiDog
1 引用 • 7 回帖 • 586 关注
WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。
-
宕机
13 引用 • 82 回帖 • 53 关注
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
-
Mobi.css
1 引用 • 6 回帖 • 733 关注
Mobi.css is a lightweight, flexible CSS framework that focus on mobile.
-
服务器
124 引用 • 580 回帖
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
-
旅游
90 引用 • 899 回帖
希望你我能在旅途中找到人生的下一站。
-
OkHttp
16 引用 • 6 回帖 • 60 关注
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
-
BAE
19 引用 • 75 回帖 • 632 关注
百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。
-
GitBook
3 引用 • 8 回帖 • 2 关注
GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。
-
代码片段
54 引用 • 292 回帖
代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。
用户在该标签下分享代码片段时需在帖子标题前添加
[css]
或[js]
用于区分代码片段类型。 -
思源笔记
22019 引用 • 87804 回帖 • 2 关注
思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。
融合块、大纲和双向链接,重构你的思维。
-
JVM
180 引用 • 120 回帖 • 1 关注
JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。
-
创业
84 引用 • 1399 回帖 • 1 关注
你比 99% 的人都优秀么?
-
Flume
9 引用 • 6 回帖 • 621 关注
Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。
-
RabbitMQ
49 引用 • 60 回帖 • 366 关注
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
-
OnlyOffice
4 引用 • 2 关注
-
Netty
49 引用 • 33 回帖 • 19 关注
Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。
-
反馈
123 引用 • 911 回帖 • 237 关注
Communication channel for makers and users.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于