Linux效能分析和最佳化命令介紹
導讀 | CPU是作業系統穩定執行的根本,CPU的速度與效能在很大程度上決定了系統整體的效能,因此,CPU數量越多、主頻越高,伺服器效能也就相對越好。 |
一般網際網路的專案都是部署在 伺服器上的,如果linux伺服器出了問題,那麼我們們平時學習的高併發,穩定性之類的是沒有任何意義的,所以對linux效能的把握就顯得非常重要,當然很多同學可能覺得這些是運維同學的事情,但是我不這麼認為,不管你是架構師,還是crud boy,對專案有個全域性的掌控是一項非常重要的基本素質,所以總結了這篇文章,希望對您有用,如果您覺得我寫的還不錯,看完記得點個贊,點個再看哦。我們們廢話不用多說,直接進入正題。
CPU是作業系統穩定執行的根本,CPU的速度與效能在很大程度上決定了系統整體的效能,因此,CPU數量越多、主頻越高,伺服器效能也就相對越好。
記憶體的大小也是影響Linux效能的一個重要的因素,記憶體太小,系統程式將被阻塞,應用也將變得緩慢,甚至失去響應;記憶體太大,導致資源浪費。
磁碟的I/O效能直接影響應用程式的效能,在一個有頻繁讀寫的應用中,如果磁碟I/O效能得不到滿足,就會導致應用停滯。好在現今的磁碟都採用了很多方法來提高I/O效能,比如常見的磁碟RAID技術。
Linux下的各種應用,一般都是基於網路的,因此網路頻寬也是影響效能的一個重要因素,低速的、不穩定的網路將導致網路應用程式的訪問阻塞,而穩定、高速的網路頻寬,可以保證應用程式在網路上暢通無阻地執行。幸運的是,現在的網路一般都是千兆頻寬或光纖網路,頻寬問題對應用程式效能造成的影響也在逐步降低。
這裡需要注意的是:load average這個輸出值,這三個值的大小一般不能大於系統CPU的個數
檢視系統cpu的資訊
cat /proc/cpuinfo中的資訊
其中cpu cores即為cpu的核數
也可以用cat /proc/cpuinfo |grep "cores"|uniq直接檢視
cat /proc/cpuinfo |grep "cores"|uniq cpu cores : 2
r表示執行和等待cpu時間片的程式數,這個值如果長期大於cpu的個數,則需要增加系統cpu
b表示等待資源的程式數
us列顯示了使用者程式消耗CPU時間百分比,us比較高的時候,說明使用者程式消耗cpu的時間多,如果長期大於50%,就需要最佳化程式和演算法
sy列顯示了核心程式消耗的cpu時間百分比,sy值較高的時候,說明核心消耗的cpu資源很多
根據經驗,us+sy的參考值為80%,如果us+sy大於 80%說明可能存在CPU資源不足。
sar命令會增加系統開銷 但是影響不大
安裝sar命令:
yum install sysstat
u顯示系統所有cpu在取樣時間內的負載狀態)圖片%user:使用者程式消耗cpu的時間百分比:
sar -u 3 5
%nice:執行正常程式所消耗cpu的百分比
%system:系統消耗cpu時間百分比
%iowait:IO等待所佔用cpu時間百分比
%steal:記憶體在相對緊張的環境下pagein強制對不同頁面進行的steal操作
%idle:cpu處在空閒時間的百分比
free -m
檢視以M為單位的記憶體使用情況
一般有這樣一個經驗公式:
應用程式可用記憶體/系統實體記憶體>70%時,表示系統記憶體資源非常充足,不影響系統效能。
應用程式可用記憶體/系統實體記憶體<20%時,表示系統記憶體資源緊缺,需要增加系統記憶體。
20%<應用程式可用記憶體/系統實體記憶體<70%時,表示系統記憶體資源基本能滿足應用需求,暫時不影響系統效能。
swpd表示切換到記憶體交換去的記憶體數量(k),如果swpd的值不為0,或者比較大,但是si,so的值長期為0,這種情況不用擔心,不會影響效能
free表示空閒的實體記憶體數量
buffer表示buffers cache的記憶體數量,一般對裝置的讀寫才需要緩衝
cache表示page cached的記憶體數量。一般作為檔案系統cached,頻繁訪問的檔案都會被cached,如果cache值較大,說明cached的檔案較多,如果此時IO中的bi比較小,說明檔案系統效率比較好
si表示由磁碟調入記憶體,也就是記憶體進入記憶體交換區的數量
so表示由記憶體調入磁碟,也就是記憶體交換區進入記憶體的數量 一般情況下,so si的值都為0。如果si so的值長期不為0,則表示系統記憶體不足,需要增加記憶體
iostat -d 2 10
Blk_reads/s 每秒讀取的資料塊數
Blk_wrtn/s 每秒寫入的資料塊數
Blk_read 讀取的所有塊數
Blk_wrtn 寫入的所有塊數
這幾個值沒有標準 如果長期都很大 肯定是不正常的
sar -d 2 5
await 平均每次裝置I/O操作的等待時間(毫秒)
svctm 平均每次裝置I/O操作的服務時間(毫秒)
%util 一秒中有百分之幾的時間用於I/O操作
正常情況下svctm應該是小於await的,svctm的值和磁碟效能,cpu記憶體等都有關係
如果svctm的值和await的值相近表示幾乎沒有I/O等待,磁碟效能很好,如果await的值遠高於svctm,表示I/O佇列等待時間太長,系統上的應用程式將變慢,此時可以透過更換更快的硬碟來解決問題
%util越小越好,如果%util接近100%表示磁碟產生的I/O請求太多,I/O系統已經滿負載在工作,此時可以透過最佳化程式或者更換更快的磁碟來解決問題
網路效能評估
透過ping命令檢測網路的連通性。
透過netstat -i 組合檢測網路介面狀況。
透過netstat -r 組合檢測系統路由表資訊。
透過sar -n 組合顯示系統的網路執行狀態(sar -n DEV 5 3)。
常用分析:
檢視tcp連線數最多的ip:
sudo netstat -pant | grep ":22" | awk '{print $5}' | awk -F":" '{print $4}' |sort|uniq -c|sort -nr
解釋:
awk -F":" '{print $4}' 表示把結果的第4列用:號分割
sort -nr 排序,-n以數值大小排序,-r倒序,從大到小。
uniq -c 刪除重複的行,-c表示加上每行出現的次數。
netstat命令是一個監控TCP/IP網路的非常有用的工具, 它可以顯示路由表、實際的網路連線以及每一個網路介面裝置的狀態資訊。
netstat -pant
引數-p :顯示正在使用Socket的程式識別碼和程式名稱;
引數-a :顯示所有連線中的Socket;
引數-n :直接使用ip地址,而不透過域名伺服器;
引數-t :顯示TCP傳輸協議的連線狀況。
提取訪問nginx伺服器最多的10個ip。
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n10
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2773747/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Linux】jq 命令介紹和使用Linux
- 進行Linux效能監控的命令介紹Linux
- Linux xargs命令介紹Linux
- linux xhost命令介紹Linux
- linux ps命令介紹Linux
- Linux yum 命令介紹Linux
- Linux top命令介紹Linux
- Linux make命令介紹Linux
- Linux useradd 命令介紹Linux
- Linux重啟命令介紹Linux
- Linux防火牆介紹和iptables常用命令Linux防火牆
- Linux 關機命令介紹shutdownLinux
- linux基本命令介紹(二)Linux
- linux基本命令介紹(一)Linux
- linux vi命令常用方法介紹Linux
- Linux常用命令介紹Linux
- AIX中find命令和xargs命令介紹AI
- 【Linux】Linux命令快速學習神器tldr、cheat介紹和使用Linux
- Tkprof工具介紹和分析
- mvn相關介紹和命令
- Linux常用命令介紹(搜尋命令)Linux
- 12 個 Linux 程式管理命令介紹Linux
- linux高階工具命令 -- vmstat介紹Linux
- 提高網站效能的SSL/TLS最佳化方法介紹!網站TLS
- Tkprof工具介紹和分析[轉]]
- Linux ls命令最詳細用法介紹Linux
- Linux Grep命令使用的詳細介紹Linux
- SRVCTL命令介紹
- docker 命令介紹Docker
- tar命令介紹
- mysqlcheck使用介紹 檢查、修復、最佳化、分析表MySql
- 2—-svn介紹和常用命令
- HazelCast分散式Map介紹和分析AST分散式
- linux20個常用命令詳解和用法 linux常用命令大全介紹Linux
- Linux Boot,Kernel 和 Service 介紹Linuxboot
- Linux中一些 Sed命令技巧介紹Linux
- Linux下ulimit命令的詳細使用介紹LinuxMIT
- 詳細介紹Linux finger命令的使用Linux