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.pswp.cn/news/280820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280820.shtml
英文地址,請注明出處:http://en.pswp.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…