Linux 性能监控 : CPU 、Memory 、 IO 、Network

一、CPU

1.良好状态指标

  • CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%

  • 上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的

  • 可运行队列:每个处理器的可运行队列<=3个线程

2.监控工具

  • vmstat
$ vmstat 1procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r   b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st14 0 140 2904316 341912 3952308 0 0 0 460 1106 9593 36 64 1 0 0 17 0 140 2903492 341912 3951780 0 0 0 0 1037 9614 35 65 1 0 0 20 0 140 2902016 341912 3952000 0 0 0 0 1046 9739 35 64 1 0 0 17 0 140 2903904 341912 3951888 0 0 0 76 1044 9879 37 63 0 0 0 16 0 140 2904580 341912 3952108 0 0 0 0 1055 9808 34 65 1 0 0 

重要参数:

r,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用

b,被blocked的进程数,正在等待IO请求

in,interrupts,被处理过的中断数

cs,context switch,系统上正在做上下文切换的数目

us,用户占用CPU的百分比

sys,内核和中断占用CPU的百分比

id,CPU完全空闲的百分比

上例可得:

sy高us低,以及高频度的上下文切换(cs),说明应用程序进行了大量的系统调用;

这台4核机器的r应该在12个以内,现在r在14个线程以上,此时CPU负荷很重。

  • 查看某个进程占用的CPU资源
$  while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'db_server_login'; sleep 1; done PID NI PRI %CPU PSR COMMAND 28577 0 23 0.0 0 db_server_login 28578 0 23 0.0 3 db_server_login 28579 0 23 0.0 2 db_server_login 28581 0 23 0.0 2 db_server_login 28582 0 23 0.0 3 db_server_login 28659 0 23 0.0 0 db_server_login …… 

二、Memory

1.良好状态指标

  • swap in (si) == 0,swap out (so) == 0
  • 应用程序可用内存/系统物理内存 <= 70%

2.监控工具

  • vmstat
$ vmstat 1procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st0 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1 0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0 0 1 259252 2616 128 6148 19784 18712 19784 18712 3821 1853 0 1 3 95 1 1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0 2 1 262140 2964 128 5852 24912 17304 24952 17304 4737 2341 86 10 0 0 4 

重要参数:

swpd,已使用的 SWAP 空间大小,KB 为单位 free,可用的物理内存大小,KB 为单位 buff,物理内存用来缓存读写操作的buffer大小,KB 为单位 cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位 si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位 so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位

上例可得:

物理可用内存 free 基本没什么显著变化,swapd逐步增加,说明最小可用的内存始终保持在 256MB(物理内存大小) * 10% = 2.56MB 左右,当脏页达到10%的时候就开始大量使用swap。

  • free
$ free -mtotal used free shared buffers cachedMem: 8111 7185 926 0 243 6299 -/+ buffers/cache: 643 7468 Swap: 8189 0 8189 

三、磁盘IO

1.良好状态指标

  • iowait % < 20% 提高命中率的一个简单方式就是增大文件缓存区面积,缓存区越大预存的页面就越多,命中率也越高。 Linux 内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系统只有少量可用物理内存的时候 Linux 才开始释放一些不用的页。

2.监控工具

  • 查看物理内存和文件缓存情况
$ cat /proc/meminfoMemTotal:      8182776 kBMemFree:       3053808 kBBuffers: 342704 kB Cached: 3972748 kB 

这台服务器总共有 8GB 物理内存(MemTotal),3GB 左右可用内存(MemFree),343MB左右用来做磁盘缓存(Buffers),4GB左右用来做文件缓存区(Cached)。

  • sar
$ sar -d 2 3Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU) 11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00 11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02 

重要参数:

await表示平均每次设备I/O操作的等待时间(以毫秒为单位)

svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)

%util表示一秒中有百分之几的时间用于I/O操作

如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。

四、Network IO

对于UDP

1.良好状态指标

接收、发送缓冲区不长时间有等待处理的网络包

2.监控工具

  • netstat

对于UDP服务,查看所有监听的UDP端口的网络情况


$ watch netstat -lunpProto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nameudp        0      0 0.0.0.0:64000 0.0.0.0:* - udp 0 0 0.0.0.0:38400 0.0.0.0:* - udp 0 0 0.0.0.0:38272 0.0.0.0:* - udp 0 0 0.0.0.0:36992 0.0.0.0:* - udp 0 0 0.0.0.0:17921 0.0.0.0:* - udp 0 0 0.0.0.0:11777 0.0.0.0:* - udp 0 0 0.0.0.0:14721 0.0.0.0:* - udp 0 0 0.0.0.0:36225 0.0.0.0:* - 

RecvQ、SendQ为0,或者不长时间有数值是比较正常的。

对于UDP服务,查看丢包情况(网卡收到了,但是应用层没有处理过来造成的丢包)


$ watch netstat -suUdp:278073881 packets received4083356897 packets to unknown port received.2474435364 packet receive errors1079038030 packets sent

packet receive errors 这一项数值增长了,则表明在丢包。

这里有对packet receive errors的稍微详细些的解释,它包含了7种错误,and通常表明是checksum错误。不过我们通常通过这个数值的变化来判断UDP服务是否丢包(第2项错误),不知道是否有其他什么方法来判断UDP的丢包?:

"packet receive errors" usually means:1) data is truncated, error in checksum while copying2) udp queue is full, so it needs to be dropped 3) unable to receive udp package from encapsulated socket 4) sock_queue_rcv_skb() failed with -ENOMEM 5) it is a short packet 6) no space for header in udp packet when validating packet 7) xfrm6_policy_check() fails many times it means the checksum is not right. 

对于TCP(来自davidshan单卫的经验,thx~)

1.良好状态指标

对于TCP而言,不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。

所以,tcp而言更多的专注重传率

2、监控工具

# cat /proc/net/snmp | grep Tcp:Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRstsTcp: 1 200 120000 -1 78447 413 50234 221 3 5984652 5653408 156800 0 849

重传率 = RetransSegs / OutSegs

至于这个值在多少范围内,算ok的,得看具体的业务了。

业务侧更关注的是响应时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 打飞机(小游戏)[版权非本人 本人制作收藏整理]

今天在网络上 看到一个纯java的小游戏 代码copy到 myeclipse中 居然效果还不错 这是一些效果图 当然了 图片是我自己找的 有心兴趣的朋友可以做的好看一点 具体的代码 都放在自己的文件里去了 那么可以去下载 https://i.cnblogs.com/Files.aspx 转载于:https://www.cnblogs…

Cygwin使用指南

1 引言cygwin是一个在windows平台上运行的unix模拟环境&#xff0c;是cygnus solutions公司开发的自由软件&#xff08;该公司开发了很多好东西&#xff0c;著名的还有eCos&#xff0c;不过现已被Redhat收购&#xff09;。它对于学习unix/linux操作环境&#xff0c;或者从unix到…

nest 架构_当有人打来您的Nest Hello时,如何让Google Home通知您

nest 架构The Nest Hello can alert you on your phone whenever someone rings your doorbell, but if you have a Google Home, you can also have Google Assistant audibly announce that someone is at the door. 无论何时有人按下门铃&#xff0c; Nest Hello都会在电话上…

如何序列化派生类

前言假设有一个 Person 抽象基类&#xff0c;其中包含 Student 和 Teacher 派生类&#xff1a;public class Person {public string Name { get; set; } }public class Student : Person {public int Score { get; set; } }public class Teacher : Person {public string Title…

OPC Client “failed to execute OPCENUM” 解决方法

进入cmd重新执行 OpcEnum.exe /regserver 即可。

django07: 模板语言(旧笔记)

详见&#xff1a;https://www.cnblogs.com/liwenzhou/p/7931828.html#autoid-2-3-6 包含&#xff1a; 模板 块 组件 静态文件

block,inline和inline-block概念和区别

block&#xff1a;block-level elements (块级元素) &#xff0c;inline&#xff1a; inline elements (内联元素)。block元素通常被现实为独立的一块&#xff0c;会单独换一行&#xff1b;inline元素则前后不会产生换行&#xff0c;一系列inline元素都在一行内显示&#xff0c…

Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0

起因是我运行wordcount测试一直卡主&#xff0c;不能执行&#xff0c;一直处于 Accept 状态&#xff0c;等待被执行&#xff0c;刚开始是各种配置yarn参数&#xff0c;以及host配置&#xff0c;后来发现还是不行 hadoop 集群安装完成后&#xff0c;在50070的 HDFS 管理后台能看…

nexus 手动增加_如何使用Google的工厂图像手动升级Nexus设备

nexus 手动增加Google’s Nexus devices are supposed to receive timely updates, but the staggered rollout means it can take weeks for devices to receive over-the-air (OTA) updates. Luckily, there’s a faster (and geekier) way to install the latest version of…

教你创建Google网站地图Sitemap.xml(转)

http://teachmyself.blog.163.com/blog/static/18881422920119895248288/ Sitemap.xml是 google搞出来的&#xff0c;也就是网站地图&#xff0c;不过这个网站地图是用xml写的&#xff0c;而且要按google的标准来写&#xff0c;并且要将写出来的这个文件 sitemap.xml上传到自己…

Oracle存储过程语法

创建基本的存储过程 1 CREATE OR REPLACE PROCEDURE MyProName IS 2 BEGIN 3 NULL; 4 END; 行1:CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2:IS关键词表明后面将跟随一个PL/SQL体。 行3:BEGIN关键词表…

WPF-16 图形处理

我们这节主要介绍WPF常用画图标签&#xff0c;由于WPF图形处理设计大量篇幅 ,我们在这里抛砖引玉&#xff0c;具体更多的学习资料链接https://github.com/microsoft/WPF-Samples/tree/master/Graphics 该链接中微软提供了大量的学习Demo&#xff0c;WPF图形处理最大的区别在于…

powershell 文件/文件夹操作

新建文件夹 New-Item -ItemType Directory -Force -Path $TargetPath复制文件夹到另外文件夹 Copy-Item <源文件夹> <新文件夹> -recurse -force 复制文件&#xff08;与修改文件名&#xff09; // 达到复制文件到新文件夹&#xff0c;及修改文件名效果 copy-…

纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)

三角形 <div class"box"></div> <style>.box{ width: 0;height: 0;border-top: 50px solid transparent;border-bottom: 50px solid transparent;border-left: 50px solid transparent;border-right: 50px solid red; } </style> 平行四边形…

您的MyFitnessPal帐户几乎肯定已被黑客入侵,请立即更改密码

If you’re one of the millions of the 150 million MyFitnessPal users, bad news: hackers have your email address, your user name, and your hashed password. 如果您是1.5亿MyFitnessPal用户中的数百万用户之一&#xff0c;那么这是个坏消息&#xff1a;黑客拥有您的电…

Oracle Grid 11.2.0.4 安装是出现INS-30510: Insufficient number of ASM disks selected.

最新文章&#xff1a;Virsons Blog 错误的原因是由于磁盘数和冗余层级不匹配&#xff1a; 如果创建用来存放OCR和VOTEDISK的ASM磁盘组&#xff0c;那么External、Normal、High三种冗余级别对应的Failgroup个数是1、3、5。也就是说&#xff0c;创建这三种冗余级别的磁盘组至少分…

动态编译库 Natasha 5.0 版本发布

动态编译库 Natasha 5.0 于十月份发布&#xff0c;此次大版本更新带来了强大的兼容性支持&#xff0c;目前 Natasha 已支持 .NET Standard 2.0 及 .NET Core 3.1 以上版本&#xff08;包括 .NET Framework&#xff09;了。引入项目NuGet\Install-Package DotNetCore.Natasha.CS…

著名软件公司的java笔试算法题!(含参考答案)

原题如下&#xff1a;用1、2、2、3、4、5这六个数字&#xff0c;用java写一个main函数&#xff0c;打印出所有不同的排列&#xff0c;如&#xff1a;512234、412345等&#xff0c;要求&#xff1a;"4"不能在第三位&#xff0c;"3"与"5"不能相连.…

django08: 视图与路由(旧笔记)

视图&#xff08;Views&#xff09; https://www.cnblogs.com/liwenzhou/articles/8305104.html 1.CBV和FBV 2.​​​​​上传文件示例 路由 https://www.cnblogs.com/liwenzhou/p/8271147.html 1.url正则表达 2.分组命名匹配&#xff08;参数&#xff09; 3.反向解析 …

【BZOJ1042】硬币购物(动态规划,容斥原理)

【BZOJ1042】硬币购物&#xff08;动态规划&#xff0c;容斥原理&#xff09; 题面 BZOJ Description 硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西&#xff0c;去了tot次。每次带di枚ci硬币&#xff0c;买s i的价值的东西。请问每次有多少种付款方法。 In…