伺服器性能指標 負載(Load)分析及問題排查

2020-12-01 51CTO

平常的工作中,在衡量伺服器的性能時,經常會涉及到幾個指標,load、cpu、mem、qps、rt等。每個指標都有其獨特的意義,很多時候在線上出現問題時,往往會伴隨著某些指標的異常。大部分情況下,在問題發生之前,某些指標就會提前有異常顯示。

對於這些指標的理解和查看、異常解決等,是程式設計師們重要的必備技能。本文,主要來介紹一下一個比較重要的指標——機器負載(Load),主要涉及負載的定義、查看負載方式、負載飆高排查思路等。

什麼是負載

隨著 Internet 的快速發展和業務量的不斷提高,基於網絡的數據訪問流量迅速增長,特別是對數據 中心、大型企業以及門戶網站等的訪問,其訪問流量甚至達到了 10Gb/s 的級別;同時,伺服器網 站藉助 HTTP、FTP、SMTP 等應用程式,為訪問者提供了越來越豐富的內容和信息,伺服器逐漸 被數據淹沒;另外,大部分網站(尤其電子商務等網站)都需要提供不間斷 24 小時服務,任何服 務中斷或通信中的關鍵數據丟失都會造成直接的商業損失。所有這些都對應用服務提出了高性能和 高可靠性的需求,這些海量的訪問數據均是負載。

查看機器負載

在Linux機器上,有多個命令都可以查看機器的負載信息。其中包括uptime 、top、w 等。

uptime命令

命令能夠列印系統總共運行了多長時間和系統的平均負載。uptime命令可以顯示的信息顯示依次為:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。

  1. ➜ ~uptime13:29 up23:41, 3users,loadaverages: 1.741.871.97 

這行信息的後半部分,顯示"load average",它的意思是"系統的平均負荷",裡面有三個數字,我們可以從中判斷系統負荷是大還是小。

1.74 1.87 1.97 這三個數字的意思分別是1分鐘、5分鐘、15分鐘內系統的平均負荷。我們一般表示為load1、load5、load15。

w命令

w命令的主要功能其實是顯示目前登入系統的用戶信息。但是與who不同的是,w命令功能更加強大,w命令還可以顯示:當前時間,系統啟動到現在的時間,登錄用戶的數目,系統在最近1分鐘、5分鐘和15分鐘的平均負載。然後是每個用戶的各項數據,項目顯示順序如下:登錄帳號、終端名稱、遠 程主機名、登錄時間、空閒時間、JCPU、PCPU、當前正在運行進程的命令行。

  1. ➜ ~w14:08 up23:41, 3users,loadaverages: 1.741.871.97USER TTY FROM LOGIN@ IDLE WHAThollis console - 六14 23:40-hollis s000 - 六14 20:24-zshhollis s001 - 六15 - w 

從上面的w命令的結果可以看到,當前系統時間是14:08,系統啟動到現在經歷了23小時41分鐘,共有3個用戶登錄。系統在近1分鐘、5分鐘和15分鐘的平均負載分別是1.74 1.87 1.97。這和uptime得到的結果相同。 下面還列印了一些登錄的用戶的各項數據,不詳細介紹了。

top命令

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器。

  1. ➜ ~topProcesses:244total,3running,9stuck,232sleeping,1484threads14:16:01LoadAvg:1.74,1.87,1.97 CPUusage:8.0%user,6.79%sys,85.19%idle SharedLibs:116Mresident,16Mdata,14Mlinkedit.MemRegions:66523total,2152Mresident,50Mprivate,930Mshared.PhysMem:7819Mused(1692M wired),370Munused.VM:682Gvsize,533Mframeworkvsize,6402060(0)swapins,7234356(0)swapouts.Networks:packets:383006/251Min,334448/60Mout.Disks:1057821/38Gread,350852/40Gwritten.PID COMMAND %CPUTIME #TH #WQ #PORTMEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME%CPU_OTHRSUID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH CSW30845 top 3.0 00:00.491/1 0 21 3632K 0B 0B 308451394 running *0[1] 0.000000.00000 0 3283+ 112 203556+ 101770+ 8212+ 119901+ 823+30842 GoogleChrom0.0 00:47.3917 0 155 130M 0B 0B 1146 1146 sleeping*0[1] 0.000000.00000 501 173746 2697 117678 37821 364228 444830 310043 

上面的輸出結果中,Load Avg: 1.74, 1.87, 1.97顯示的就是負載信息。

機器正常負載範圍

對於機器的Load到底多少算正常的問題,一直都是很有爭議的,不同人有著不同的理解。對於單個CPU,有人認為如果Load超過0.7就算是超出正常範圍了。也有人認為只要不超過1都沒問題。也有人認為,單個CPU的負載在2以下都可以接受。

為什麼會有這麼多不同的理解呢,是因為不同的機器除了CPU影響之外還有其他因素的影響,運行的程序、機器內存、甚至是機房溫度等都有可能有區別。

比如,有些機器用於定時執行大量的跑批任務,這個時間段內,Load可能會飆的比較高。而其他時間可能會比較低。那麼這段飆高時間我們要不要去排查問題呢?

我的建議是,最好根據自己機器的實際情況,建立一個指標的基線(如近一個月的平均值),只要日常的load在基線上下範圍內不太大都可以接收,如果差距太多可能就要人為介入檢查了。

如何降低負載

導致負載高的原因可能很複雜,有可能是硬體問題也可能是軟體問題。

如果是硬體問題,那麼說明機器性能確實就不行了,那麼解決起來很簡單,直接換機器就可以了。

前面我們提過,CPU使用、內存使用、IO消耗都可能導致負載高。如果是軟體問題,有可能由於Java中的某些線程被長時間佔用、大量內存持續佔用等導致。建議從以下幾個方面排查代碼問題:

1、是否有內存洩露導致頻繁GC

2、是否有死鎖發生

3、是否有大欄位的讀寫

4、會不會是資料庫操作導致的,排查SQL語句問題。

這裡還有個建議,如果發現線上機器Load飆高,可以考慮先把堆棧內存dump下來後,進行重啟,暫時解決問題,然後再考慮回滾和排查問題。

Java Web應用Load飆高排查思路

1、使用uptime查看當前load,發現load飆高。


2、使用top命令,查看佔用CPU較高的進程ID。


3、使用 top命令,查看具體是哪個線程佔用率較高


4、使用printf 命令查看這個線程的16進位


5、還可以使用jstat()來查看GC情況,看看是否有頻繁FGC,然後再使用jmap來dump內存,查看是否存在內存洩露。

【編輯推薦】

【責任編輯:

武曉燕

TEL:(010)68476606】

相關焦點

  • [圖書連載]負載測試(Load Test)
    負載測試(Load Testing)是確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統組成部分的相應輸出項,例如通過量、響應時間、CPU負載、內存使用等來決定系統的性能。負載測試是一個分析軟體應用程式和支撐架構、模擬真實環境的使用,從而確定能夠接收的性能過程。
  • 10大主流壓力/負載/性能測試工具推薦
    然而很多傳統企業在試水網際網路+的過程中,往往由於資源或產品迭代速度等原因忽視了這一塊工作,導致新產品上線之後頻繁出現卡頓等嚴重影響用戶體驗的問題。那麼網際網路產品為什麼要進行壓力/負載/性能測試,又有哪些工具幫我們實現呢,本文將為您細說端詳。壓力/負載/性能測試之異同在產品研發過程中,常常會混淆壓力/負載/性能測試這三者之間的區別,這三種測試到底有什麼不同呢?
  • 線上排查|線上Redis負載暴漲100%,業務中斷,這樣排查很贊!
    我是小小,今天是本周的第六篇,本篇將會著重講解關於Redis負載的問題。 網頁監控 通過阿里的Grafana監控,發現伺服器的CPU負載,內存,網絡輸入輸出相當正常,所以Redis出現問題。
  • 汽車安全測試 load dump拋負載測試分享:直流電源SYSKON系列
    汽車安全測試 load dump拋負載測試分享:直流電源SYSKON系列消費者的多樣化需求,導致車上搭載的電子設備增多(LED大燈、液晶顯示屏、車載音響、無線充電器等等),而這些電子設備均需要供電。牽扯到電,各類安全性測試就是重中之重。
  • 解析F5伺服器負載均衡方案
    解決方案針對eBay資料庫伺服器負載均衡的需求特點,eBay考慮了三種主要解決方案。1)將資料庫垂直分割,劃分成多層資料庫處理,減輕原來單層資料庫處理數據而形成的瓶頸與可用性問題。但問題:這種方案很難部署,而且也沒有從根本上解決單點故障問題。2)採用OracleOPS/RAC機群解決方案。問題:要求給便資料庫編程代碼
  • 軟體測試中的性能測試 負載測試 壓力測試
    當然不知說這些,還要說在項目的哪一塊用過,有沒有遇到什麼問題之類的。2.Jmeter的工作原理是什麼?jmeter是建立一個線程池,多線程運行sampler來產生負載,通過添加監聽器(聚合報告、圖形結果和察看結果樹等)來記錄測試結果 ,還可以通過斷言來驗證結果的正確性。
  • 太一星晨:負載均衡性能參數如何測評?
    【賽迪網訊】8月6日消息,當前,在雲計算和大數據為主導的需求環境下,負載均衡和應用交付已為大型企業數據中心「保駕護航」的必備品。不過,負載均衡作為一種比較「新奇」的設備,其主要功能雖然以為相關需求人士所熟知,但是它的各種性能指標卻是「亂花漸欲迷人眼」,一般人琢磨半天也不得所以。
  • Tengine問題排查必備
    因此當客戶抱怨延時高而伺服器端看到卻很快的時候,可能客戶說的也對,你看到的也對,這時候就需要根據上述分析,判斷具體是哪裡導致客戶端和伺服器端看到延時差距,進而快速定位問題。伺服器端慢是真的慢,但是伺服器端看到快,可不一定真的快。
  • 性能卓越戴爾R840伺服器西安現貨熱銷
    (中關村在線陝西行情)戴爾PowerEdge R840可針對您的資料庫內分析加快提供業務見解,並且實現卓越的性能密度。藉助功能強大的四路性能和大容量內存,針對要求苛刻的應用程式提供一致的結果。隨著您的工作負載變得日趨複雜,OpenManage™ Enterprise還可簡化IT基礎架構的管理,讓您可以專注於業務目標。通過提供集成的安全功能和久經考驗的可靠性,幫助您延長企業數據中心的正常運行時間。目前該設備在商家「陝西迪眾電子科技有限公司」到貨中。商家報價45000元含稅。
  • 性能強大 戴爾R840伺服器西安現貨大促
    (中關村在線 西安行情)戴爾PowerEdge R840可針對您的資料庫內分析加快提供業務見解,並且實現卓越的性能密度。藉助功能強大的四路性能和大容量內存,針對要求苛刻的應用程式提供一致的結果。隨著您的工作負載變得日趨複雜,OpenManage™ Enterprise還可簡化IT基礎架構的管理,讓您可以專注於業務目標。通過提供集成的安全功能和久經考驗的可靠性,幫助您延長企業數據中心的正常運行時間。
  • web伺服器性能對比
    Nginx才短短幾年,就拿下了Web伺服器大壁江山,眾所周知,Nginx在處理大並發靜態請求方面,效率明顯高於Httpd,甚至能輕鬆解決C10K問題。在高並發連接的情況下,Nginx是Apache伺服器不錯的替代品。Nginx同時也可以作為7層負載均衡伺服器來使用。
  • 常用軟體性能測試工具
    主流負載性能測試工具  負載性能測試工具的原理通常是通過錄製、回放腳本、模擬多用戶同時訪問被測試系統,製造負載,產生並記錄各種性能指標,生成分析結果,從而完成性能測試的任務。  主流的負載性能測試工具有:  QA Load:Compuware公司的QALoad是客戶/伺服器系統、企業資源配置(ERP)和電子商務應用的自動化負載測試工具。
  • 雲伺服器怎麼虛擬化形成的
    雲計算利用伺服器虛擬化技術可實現對虛擬機的部署和配置,通過對虛擬機的快速部署和實時遷移,能大大提高雲伺服器系統的效能。虛擬化技術的分類主要有:伺服器虛擬化、存儲虛擬化、網絡虛擬化、應用虛擬化。伺服器虛擬化技術按照虛擬對象來分,可分為:CPU虛擬化、內存虛擬化、I/O虛擬化;按照虛擬化程度可分為:全虛擬化、半虛擬化、硬體輔助虛擬化。
  • 一文看懂集群、分布式與負載均衡的關係
    負載均衡(Load Balance)  網絡的負載均衡是一種動態均衡技術,常見的實現方式是通過一些工具實時地分析數據包,掌握網絡中的數據流量狀況,把任務合理均衡地分配出去。這種技術基於現有網絡結構,提供了一種擴展伺服器帶寬和增加伺服器吞吐量的廉價有效的方法,加強了網絡數據處理能力,提高了網絡的靈活性和可用性。
  • 負載均衡技術與nat123負載均衡
    此文綜合分析了常用的負載均衡技術與nat123的負載均衡技術與故障轉移。一 .概述:在單一的伺服器上執行WEB應用程式有一些重大的問題,當網站成功建成並開始接受大量請求時,單一伺服器終究無法滿足需要處理的負荷量,所以就有點顯得有點力不從心了另外一個常見的問題是會產生單點故障,如果該伺服器壞掉,那麼網站就立刻無法運作了不論是因為要有較佳的擴充性還是容錯能力,我們都會想在一臺以上的伺服器計算機上執行WEB應用程式二 . 目前比較常用的負載均衡技術主要有:1.
  • F5案例分析-IP V6負載均衡
    業務問題與障礙    該運營商擬建成國內第一個商用的IP V6運營網絡,主要業務涉及網頁服務,IP TV等,現階段為試運行,主要以提供IP TV點播為主。由於屬於新建網絡,申請IP V4的資源較為困難,因此該運營商決定在全網採用IP V6運營。在IP TV的運行中,由於主要針對普通家庭用戶,因此系統對響應的延遲、系統高可用性要求極高。
  • 您知道load是什麼意思嗎?
    說到load這個單詞,我們都知道的意思是負載、負荷。除了這類意思,您知道load還有什麼意思嗎?今天,我們就一起看一下load的用法。首先,我們看一下load做名詞的用法。這句話中loads是load的複數形式,意思是負載、負荷。2、He put half a load of washing in the machine.他把限量一半的衣物放進了洗衣機。這句話中load的意思是裝載量、容納量。
  • PERC電池電性能問題分析方法
    電性能參數對於運營現場人員來說,就如同人們到醫院體檢的檢查結果一樣,可以反映出製程過程中的各種問題,通過各種參數的對比分析、跟蹤,來判斷問題是否得到真正解決,今天"光伏技術」將介紹電性能異常分析方法,期待與您共同進步。1. 電性能偏低原因分析1.1開路電壓UOC偏低a. 燒結燒穿;b. 未擴散片;c.
  • 全面認識F5負載均衡
    F5負載均衡產品時我們常用的網絡負載控制的產品之一,那麼在此我們對它的功能和特點進行一個全面的介紹。通過對這個產品的認識,我們也能發現,在網絡管理中我們需要注意哪些方面的問題。那麼更多的內容,還是從下文中了解吧。
  • GPS模塊的性能指標及常見問題分析
    GPS模塊主要的性能指標GPS模塊性能指標主要有接收靈敏度、定位時間、位置精度、功耗、時間精度等。模塊開機定位時間在不同的啟動模式下有很大不同。使用GPS模塊出現的問題分析1. GPS模塊的16通道是什麼含義?