總結有關服務器的各項性能指標,以及如何判斷服務器的性能情況出現問題,性能指標表明的含義。同時也總結Linux服務器上有關工具的各項參數含義,以及平常須要注意的參數信息。html
首先須要分清楚CPU使用率和機器負載不是相同的概念,若是CPU使用率,可是不必定表明機器負載一樣也高。因此關於CPU使用率和負載的區別:linux
- CPU使用率:顯示的是程序在運行期間佔用的CPU百分比;
- CPU負載:顯示的是一段時間內正在使用和等待使用的CPU平均任務數;
對於查看負載可使用uptime,w命令,同時top,vmstat工具也能夠同時觀察CPU使用率和負載狀況。
查看CPU核數:ios
grep "model name" /proc/cpuinfo | wc -l
命令返回信息中的load average就是關於系統的平均負載,裏面的三個數字分別表明着1分鐘、5分鐘、15分鐘內的系統平均負載。安全
(若是是多核CPU,1查看各個CPU詳細信息)服務器
top工具的第一行後面的三個值,分別也是表明以前的一、五、15分鐘內的平均負載;
第三行關於CPU使用率各項參數的含義:網絡
- (us)user:CPU在低nice值(高優先級)用戶態所佔用的時間;(大部分CPU時間都在執行此類程序)
- (sy)sytem:CPU處於內核所佔用的時間,操做系統經過系統調用從用戶態陷入內核態,執行特定的服務;(一般該值會比較小,當服務器執行的IO比較密集的時候,會比較大)
- ni(nice):CPU在高nice值(低優先級)用戶態以低優先級運行佔用的時間(nice>0);
- si(softirq):系統處理軟中斷所消耗的時間
- st(steal):在虛擬機狀況下,由於虛擬機下的CPU是共享物理CPU,代表這段時間虛擬機等待hypervisor調度CPU的時間。
首先對於CPU使用率,若是長時間處於60-80%的範圍,就意味着可能服務器出現瓶頸。若是須要具體分析,還須要觀察是user佔用率太高,仍是system佔用率太高。具體:tcp
- us:當user佔用率太高,一般是某些個別的進程佔用了大量的CPU;
- sy:當system佔用率太高,說明系統管理花費了大量時間,好比一些IO操做,或者部份內核,驅動模塊;
*(其次負載指標來講,一直存在許多爭議,我綜合了一些文章的觀點,具體是CPU負載保持在(CPU核數0.7)範圍內,這樣的負載是安全的,若是超過必定的負載(=CPU核數)就能夠算是意味着over load。)**
內存也叫內存存儲器,做用是暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。ide
- 物理內存:經過物理內存條得到的內存空間,即隨機存儲器(RAM),與CPU直接交換數據的內部存儲器,也叫主存
- 虛擬內存:計算機的一種內存管理技術,使應用程序認爲擁有可連續使用的內存(完整的地址空間),實際上,被分割爲多個物理內存碎片,以及部分暫時存儲在外部磁盤存儲器上,在須要時進行數據交換。
- Swap分區:在系統的物理內存不夠用的時候,將物理內存中的一部分空間釋放出來,供當前運行的程序使用,這些被釋放的空間可能來自於很長時間沒有操做的程序,釋放的空間被臨時保存到Swap空間中,等到那些程序須要運行的時候,在從Swap分區中恢復保存的數據到內存。
free命令能夠顯示Linux系統中的空閒,已用的物理內存,Swap分區:工具
- total:總的可用空間,used:已使用空間;free:空閒可用空間;shared:共享使用物理內存空間;available:能夠被應用程序使用的物理內存空間。
- buffers就是即將要寫入到磁盤中,cache使從磁盤中讀取出來。buff/cache:被buff和cache使用的物理內存空間
- free是真正未被使用到的物理內存空間,avaiable是從應用程序角度看,若是應用程序須要使用到內存,能夠從buff/cache中回收內存知足應用程序的請求。
(展現不一樣進程的內存佔用狀況)性能
對於磁盤I/O訪問負載太高,一般會出現系統操做,應用服務沒法響應等問題,一般能夠經過top、iostat,iotop,ps,lsof工具定位問題。
(wa:表示IO等待所佔用的CPU時間佔比,高過30%時IO壓力太高)
(當util接近100%時,說明產生的I/O請求太多,滿負荷運行。)
測試有關網絡性能,通常從可用性、響應時間、網絡利用率、網絡吞吐量,網絡帶寬容量這幾個方面。而經常使用的工具則有(ping、netstat、sar、tcpdump、iptraf)
查看制定以太網卡的吞吐量狀況:
iptraf-ng -d eth0
查看網卡性能:
sar -n DEV 1 100
參數含義:
- IFACELAN接口
- rxpck/s每秒鐘接收的數據包
- txpck/s每秒鐘發送的數據包
- rxbyt/s或者rxkB/s每秒鐘接收的字節數(上傳速度,網卡入流量)
- txbyt/s或者txkB/s每秒鐘發送的字節數(下載速度,網卡出流量)
- rxcmp/s每秒鐘接收的壓縮數據包
- txcmp/s每秒鐘發送的壓縮數據包
- rxmcst/s每秒鐘接收的多播數據包
Linux下的CPU使用率與服務器負載的關係與區別:
https://www.jianshu.com/p/e134b8498413
服務器性能指標(一)——負載(Load)分析及問題排查:
https://www.hollischuang.com/archives/2409
服務器性能指標(三)——內存使用分析及問題排查:
https://www.hollischuang.com/archives/2642
Linux服務器I/O太高緣由及解決方法:
https://www.linuxidc.com/Linux/2016-09/134813.htm
查看linux服務器硬盤IO讀寫負載:
https://www.cnblogs.com/mfryf/archive/2012/03/12/2392012.html