『壹』 如何檢查linux伺服器cpu,內存性能
1.查看系統負載
(1)uptime
這個命令可以快速查看機器的負載情況。
在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。
命令的輸出,load average表示1分鍾、5分鍾、15分鍾的平均負載情況。
通過這三個數據,可以了解伺服器負載是在趨於緊張還是趨於緩解。
如果1分鍾平均負載很高,而15分鍾平均負載很低,說明伺服器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪裡。
反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。
(2)W
Show who is logged on and what they are doing.
可查詢登錄當前系統的用戶信息,以及這些用戶目前正在做什麼操作
其中的load average後面的三個數字則顯示了系統最近1分鍾、5分鍾、15分鍾的系統平均負載情況
注意:
load average這個輸出值,這三個值的大小一般不能大於系統邏輯CPU的個數。
如果輸出中系統有4個邏輯CPU,如果load average的三個值長期大於4時,說明CPU很繁忙,負載很高,可能會影響系統性能,
但是偶爾大於4時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小於CPU的個數,則表示CPU還有空閑
2.dmesg | tail
該命令會輸出系統日誌的最後10行。
這些日誌可以幫助排查性能問題.
3.vmstat
vmstat Virtual Meomory Statistics(虛擬內存統計),用來獲得有關進程、虛存、頁面交換空間及 CPU活動的信息。這些信息反映了系統的負載情況。
後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義
(1)監控進程procs:
r:等待在CPU資源的進程數。
這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和(出現了CPU瓶頸)。
b:在等待io的進程數 。
(2)監控內存memoy:
swpd:現時可用的交換內存(單位KB)
free:系統可用內存數(以千位元組為單位)
buff: 緩沖去中的內存數(單位:KB)。
cache:被用來做為高速緩存的內存數(單位:KB)。
(3)監控swap交換頁面
si: 從磁碟交換到內存的交換頁數量,單位:KB/秒。
so: 從內存交換到磁碟的交換頁數量,單位:KB/秒。
如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。
(4)監控 io塊設備
bi: 發送到塊設備的塊數,單位:塊/秒。
bo: 從塊設備接收到的塊數,單位:塊/秒。
(5)監控system系統
in: 每秒的中斷數,包括時鍾中斷。
cs: 每秒的環境(上下文)轉換次數。
(6)監控cpu中央處理器:
us:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。
註:
如果IO等待時間很長,那麼系統的瓶頸可能在磁碟IO。
如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。
如果有大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合r隊列,一起分析。
4.mpstat -P ALL 1
該命令可以顯示每個CPU的佔用情況,如果有一個CPU佔用率特別高,那麼有可能是一個單線程應用程序引起的。
MultiProcessor Statistics的縮寫,是實時系統監控工具
其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次采樣的間隔時間
count 采樣的次數,count只能和delay一起使用
all : 指所有CPU
%usr : 顯示在用戶級別(例如應用程序)執行時CPU利用率的百分比
%nice :顯示在擁有nice優先順序的用戶級別執行時CPU利用率的百分比
%sys : 現實在系統級別(例如內核)執行時CPU利用率的百分比
%iowait : 顯示在系統有未完成的磁碟I/O請求期間CPU空閑時間的百分比
%irq : 顯示CPU服務硬體中斷所花費時間的百分比
%soft : 顯示CPU服務軟體中斷所花費時間的百分比
%steal : 顯示虛擬機管理器在服務另一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比
%guest : 顯示運行虛擬處理器時CPU花費時間的百分比
%idle : 顯示CPU空閑和系統沒有未完成的磁碟I/O請求情況下的時間百分比
系統有兩個CPU。如果使用參數 -P 然後緊跟CPU編號得到指定CPU的利用率。
( Ubuntu安裝: apt-get install sysstat)
5.pidstat 1
pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態
6.iostat -xz 1
iostat命令主要用於查看機器磁碟IO情況
r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千位元組)。讀寫量過大,可能會引起性能問題。
await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁碟交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬體設備遇到了瓶頸或者出現故障。
avgqu-sz:向設備發出的請求平均數量。如果這個數值大於1,可能是硬體設備已經飽和(部分前端硬體設備支持並行寫入)。
%util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬體設備已經飽和。
註:如果顯示的是邏輯設備的數據,那麼設備利用率不代表後端實際的硬體設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能
7.free -m
free命令可以查看系統內存的使用情況,-m參數表示按照兆位元組展示。
最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。
註:
第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。
如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。
8.sar -n DEV 1
sar命令在這里可以查看網路設備的吞吐率。
在排查性能問題時,可以通過網路設備的吞吐量,判斷網路設備是否已經飽和。
9.sar -n TCP,ETCP 1
sar命令在這里用於查看TCP連接狀態,其中包括:
active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網路環境惡劣,或者伺服器壓力過大導致丟包。
10.top
top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。
因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。
但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數據。
『貳』 Linux命令行查看內存
用 'top -i' 看看有多少進程處於 Running 狀態,可能系統存在內存或 I/O 瓶頸,用 free 看看系統內存使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況...
還有一種辦法是 ps -ef | sort -k7 ,將進程按運行時間排序,看哪個進程消耗的cpu時間最多。
top:
主要參數 :
free
1.作用
free命令用來顯示內存的使用情況,使用許可權是所有用戶。
**2.格式 **
**3.主要參數 **
uptime
vmstat
**1 觀察磁碟活動情況 **
磁碟活動情況主要從以下幾個指標了解:
**2 觀察cpu活動情況 **
vmstat比top更能反映出cpu的使用情況:
iostat
用於統計CPU的使用情況及tty設備、硬碟和CD-ROM的I/0量
即使爬到最高的山上,一次也只能腳踏實地地邁一步。
Linux查看CPU和內存使用情況:
在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。下面的清單詳細的列出了Linux系統下通過視圖工具或命令行來查看內存使用情況的各種方法。
1. /proc/meminfo
查看RAM使用情況最簡單的方法是通過 /proc/meminfo 。這個動態更新的虛擬文件實際上是許多其他內存相關工具(如:free / ps / top)等的組合顯示。 /proc/meminfo 列出了所有你想了解的內存的使用情況。進程的內存使用信息也可以通過/proc/<pid>/statm 和 /proc/<pid>/status 來查看。
atop命令是一個終端環境的監控命令。它顯示的是各種系統資源(CPU, memory, network, I/O, kernel)的綜合,並且在高負載的情況下進行了彩色標注。
free命令是一個快速查看內存使用情況的方法,它是對 /proc/meminfo 收集到的信息的一個概述。
GNOME System Monitor 是一個顯示最近一段時間內的CPU、內存、交換區及網路的使用情況的視圖工具。它還提供了一種查看CPU及內存使用情況的方法。
htop命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小、程序總內存大小、共享庫大小等的報告。列表可以水平及垂直滾動。
功能同 4 中介紹的GENOME版本。
memstat是一個有效識別executable(s), process(es) and shared libraries使用虛擬內存情況的命令。給定一個進程ID,memstat可以列出這個進程相關的可執行文件、數據和共享庫。
nmon是一個基於ncurses的系統基準測試工具,它可以監控CPU、內存、I/O、文件系統及網路資源等的互動模式。對於內存的使用,它可以實時的顯示 總/剩餘內存、交換空間等信息。
ps命令可以實時的顯示各個進程的內存使用情況。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 「–sort」選項對進程進行排序,例如按RSS進行排序:
smem命令允許你統計基於/proc信息的不同進程和用戶的內存使用情況。內存使用情況的分析可以導出圖表(如條形圖和餅圖)。
top命令提供了實時的運行中的程序的資源使用統計。你可以根據內存的使用和大小來進行排序。
vmstat命令顯示實時的和平均的統計,覆蓋CPU、內存、I/O等內容。例如內存情況,不僅顯示物理內存,也統計虛擬內存。
『叄』 Linux系統常用操作命令有哪些
前言
第1章 Linux命令行簡介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關機:
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹形結構顯示目錄下的內容 / 18
2.4mkdir:創建目錄 / 22
2.5touch:創建空文件或改變文件的時間戳屬性 / 27
2.6ls:顯示目錄下的內容及相關屬性信息 / 30
2.7cp:復制文件或目錄 / 39
2.8mv:移動或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號鏈接文件的內容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標准輸入轉換成命令行參數 / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴展屬性 / 73
2.19lsattr:查看文件擴展屬性 / 75
2.20file:顯示文件的類型 / 76
2.21md5sum:計算和校驗文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶和用戶組 / 80
2.23chmod:改變文件或目錄許可權 / 81
2.24chgrp:更改文件用戶組 / 85
2.25umask:顯示或設置許可權掩碼 / 86
2.26老男孩從新手成為技術大牛的心法 / 90
第3章 文件過濾及內容編輯處理命令 / 91
3.1cat:合並文件或查看文件內容 / 91
3.2tac:反向顯示文件內容 / 103
3.3more:分頁顯示文件內容 / 104
3.4less:分頁顯示文件內容 / 107
3.5head:顯示文件內容頭部 / 109
3.6tail:顯示文件內容尾部 / 111
3.7tailf:跟蹤日誌文件 / 114
3.8cut:從文本中提取一段文字並輸出 / 115
3.9split:分割文件 / 117
3.10paste:合並文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個文件的相同欄位合並 / 127
3.13uniq:去除重復行 / 129
3.14wc:統計文件的行數、單詞數或位元組數 / 131
3.15iconv:轉換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉換成UNIX格式 / 134
3.17diff:比較兩個文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內容 / 139
3.20tr:替換或刪除字元 / 140
3.21od:按不同進制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運維的多個好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過濾工具 / 153
4.2sed:字元流編輯器 / 159
4.3awk基礎入門 / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統信息 / 176
5.2hostname:顯示或設置系統的主機名 / 178
5.3dmesg:系統啟動異常診斷 / 179
5.4stat:顯示文件或文件系統狀態 / 181
5.5:統計磁碟空間使用情況 / 183
5.6date:顯示與設置系統時間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監視命令執行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate資料庫 / 199
5.13老男孩逆襲思想:新手在工作中如何問問題不會被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠程文件復制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問 / 220
第7章 Linux用戶管理及用戶信息查詢命令 / 222
7.1 useradd:創建用戶 / 222
7.2usermod:修改用戶信息 / 227
7.3userdel:刪除用戶 / 229
7.4groupadd:創建新的用戶組 / 230
7.5groupdel:刪除用戶組 / 231
7.6passwd:修改用戶密碼 / 232
7.7chage:修改用戶密碼有效期 / 237
7.8chpasswd:批量更新用戶密碼 / 238
7.9su:切換用戶 / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個用戶身份執行命令 / 244
7.12id:顯示用戶與用戶組的信息 / 248
7.13w:顯示已登錄用戶信息 / 249
7.14who:顯示已登錄用戶信息 / 250
7.15users:顯示已登錄用戶 / 252
7.16whoami:顯示當前登錄的用戶名 / 253
7.17last:顯示用戶登錄列表 / 253
7.18lastb:顯示用戶登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶的最近登錄記錄 / 255
第8章 Linux磁碟與文件系統管理命令 / 257
8.1fdisk:磁碟分區工具 / 257
8.2partprobe:更新內核的硬碟分區表信息 / 265
8.3tune2fs:調整ext2/ext3/ext4文件系統參數 / 266
8.4parted:磁碟分區工具 / 268
8.5mkfs:創建Linux文件系統 / 272
8.6mpe2fs:導出ext2/ext3/ext4文件系統信息 / 274
8.7resize2fs:調整ext2/ext3/ext4文件系統大小 / 275
8.8fsck:檢查並修復Linux文件系統 / 278
8.9dd:轉換或復制文件 / 281
8.10mount:掛載文件系統 / 284
8.11umount:卸載文件系統 / 288
8.12df:報告文件系統磁碟空間的使用情況 / 289
8.13mkswap:創建交換分區 / 293
8.14swapon:激活交換分區 / 294
8.15swapoff:關閉交換分區 / 295
8.16sync:刷新文件系統緩沖區 / 296
第9章 Linux進程管理命令 / 298
9.1ps:查看進程 / 298
9.2pstree:顯示進程狀態樹 / 305
9.3pgrep:查找匹配條件的進程 / 306
9.4kill:終止進程 / 307
9.5killall:通過進程名終止進程 / 310
9.6pkill:通過進程名終止進程 / 311
9.7top:實時顯示系統中各個進程的資源佔用狀況 / 313
9.8nice:調整程序運行時的優先順序 / 320
9.9renice:調整運行中的進程的優先順序 / 323
9.10nohup:用戶退出系統進程繼續工作 / 324
9.11strace:跟蹤進程的系統調用 / 325
9.12ltrace:跟蹤進程調用庫函數 / 332
9.13runlevel:輸出當前運行級別 / 334
9.14init:初始化Linux進程 / 335
9.15service:管理系統服務 / 335
第10章 Linux網路管理命令 / 338
10.1ifconfig:配置或顯示網路介面信息 / 338
10.2ifup:激活網路介面 / 343
ifup eth0
10.3ifdown:禁用網路介面 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個網路,所有網卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統的arp緩存 / 350
10.6ip:網路配置工具 / 351
10.7netstat:查看網路狀態 / 358
10.8ss:查看網路狀態 / 362
10.9ping:測試主機之間網路的連通性 / 363
10.10traceroute:追蹤數據傳輸路由狀況 / 366
10.11arping:發送arp請求 / 367
10.12telnet:遠程登錄主機 / 369
10.13nc:多功能網路工具 / 370
10.14ssh:安全地遠程登錄主機 / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊列 / 379
10.17mail:發送和接收郵件 / 381
10.18nslookup:域名查詢工具 / 386
10.19dig:域名查詢工具 / 389
10.20host:域名查詢工具 / 393
10.21nmap:網路探測工具和安全/埠掃描器 / 394
10.22tcpmp:監聽網路流量 / 398
第11章 Linux系統管理命令 / 407
11.1lsof:查看進程打開的文件 / 407
11.2uptime:顯示系統的運行時間及負載 / 411
11.3free:查看系統內存信息 / 411
11.4iftop:動態顯示網路介面流量信息 / 413
11.5vmstat:虛擬內存統計 / 415
11.6mpstat:CPU信息統計 / 419
11.7iostat:I/O信息統計 / 420
11.8iotop:動態顯示磁碟I/O統計信息 / 423
11.9sar:收集系統信息 / 425
11.10chkconfig:管理開機服務 / 430
11.11ntsysv:管理開機服務 / 433
11.12 setup:系統管理工具 / 434
11.13ethtool:查詢網卡參數 / 436
11.14mii-tool:管理網路介面的狀態 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動化RPM包管理工具 / 446
top命令
第12章 Linux系統常用內置命令 / 450
12.1Linux內置命令概述 / 450
12.2Linux內置命令簡介 / 450
12.3Linux常用內置命令實例 / 452
『肆』 如何用十條命令在一分鍾內檢查linux伺服器性能
1、uptime命令
這個命令可以快速查看機器的負載情況。
2、dmesg命令
該命令會輸出系統日誌的最後10行。
3、vmstat命令
vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可以讓我們更詳細的了解系統狀態。
4、mpstat命令
該命令可以顯示每個CPU的佔用情況。
5、pidstat命令
pidstat命令輸出進程的CPU佔用率。
6、iostat命令
7、free命令
free命令可以查看系統內存的使用情況,
8、sar命令
sar命令在這里可以查看網路設備的吞吐率。
9、top命令
包含了前面好幾個命令的檢查的內容。
『伍』 linux中iostat命令r/s高怎麼辦
一些基本用法:
•systemctl - 列出所有單元(UNIT)以及它們的狀態(這里的 UNIT 指的就是系統上的 job 和 service)
•systemctl list-units - 列出所有 UNIT
•systemctl start [NAME...] - 啟動一項或多項 UNIT
•systemctl stop [NAME...] - 停止一項或多項 UNIT
•systemctl disable [NAME...] - 將 UNIT 設置為開機不啟動
•systemctl list-unit-files - 列出所有已安裝的 UNIT,以及它們的狀態
•systemctl --failed - 列出開機啟動失敗的 UNIT
•systemctl --type=mount - 列出某種類型的 UNIT,類型包含:service, mount, device, socket, target
•systemctl enable debug-shell.service - 將一個 shell 腳本設置為開機啟動,用於調試
為了更方便處理這些 UNIT,你可以使用 systemd-ui 軟體包,你只要輸入 systemadm 命令就可以使用這個軟體。
『陸』 浜斾釜Linux綆鍗曞懡浠ゅ府浣犺В鍐崇郴緇熸ц兘闂棰
浜嬪疄涓婏紝鍒╃敤涓浜涚畝鍗曠殑Linux鍛戒護錛屽彲浠ュ彂鐜拌稿氱$悊涓繪満鐨勭粏鑺傞棶棰樺苟涓旇兘榪呴熻岀畝鍗曞湴瑙e喅鎬ц兘闂棰樸
涓銆乼op
瀵硅稿氱$悊鍛樻潵璇達紝鏈鏂板︿細鐨勫氨鏄疶OP鍛戒護錛屽畠鍙浠ユ樉紺哄嚭褰撳墠榪愯岀殑鎵鏈夊唴鏍鎬換鍔★紝騫朵笖鎻愪緵浜嗕竴浜涗富鏈虹姸鎬佺殑緇熻℃姤鍛娿傞粯璁ゅ湴錛孴OP鍛戒護姣忛殧浜斿垎閽熻嚜鍔ㄦ洿鏂頒竴嬈¤繖涓鏁版嵁(榪欎釜鏇存柊闂撮殧鏄鍙璁劇疆鐨)銆
TOP鍛戒護鐨勫姛鑳戒赴瀵屽埌浠や漢闅句互緗淇(浼拌″緢灝戞湁浜轟嬌鐢ㄨ繃涓鍗婁互涓婄殑鍔熻兘)銆備竴鑸鏉ヨ翠綘浼氫互鈥榟鈥欓敭寮濮嬶紝灝辨槸鈥榟elp鈥(璇存槑鏂囨。涔熼潪甯哥簿褰)銆傚府鍔╁弬鏁板彲浠ュ揩閫熸樉紺哄嚭浣犺兘浠庝腑澧炲姞鍜屽噺鍘葷殑鍐呭癸紝鍚屾椂涔熷彲浠ユ敼鍙樻帓搴忋備綘榪樺彲浠ョ敤k鏉ョ粨鏉熻繘紼嬫垨鑰呯敤r鏍囨敞鐗瑰埆鐨勮繘紼嬨
Top鍛戒護鏄劇ず褰撳ぉ鐨勬e父榪愯屾椂闂淬佺郴緇熻礋杞姐佸勭悊鍣ㄧ殑鏁伴噺銆佸唴瀛樼殑浣跨敤鐜囧拰鍝浜涜繘紼嬩嬌鐢ㄤ簡澶у氭暟CPU璧勬簮(鍖呮嫭姣忎釜榪涚▼鐨勫ぇ閲忕浉鍏充俊鎮錛屼緥濡傚湪綰跨敤鎴峰拰姝e湪鎵ц岀殑鍛戒護絳)銆
浜屻乿mstat
Vmstat鍛戒護鎻愪緵緇欎綘涓涓褰撳墠CPU銆両O銆佽繘紼嬪拰鍐呭瓨浣跨敤鐜囩殑蹇鐓с傚拰TOP鍛戒護涓鏍鳳紝瀹冭嚜鍔ㄥ姩鎬佸埛鏂幫紝騫朵笖鍙浠ョ敤涓嬮潰鐨勫懡浠ゆ墽琛岋細
$ vmstat 10
鍦ㄨ繖閲屽歡榪熸槸鎸囦袱嬈″埛鏂伴棿闅旂殑浠ョ掍負鍗曚綅鐨勬椂闂達紝榪欓噷鏄10縐掗挓銆俈MSTAT鍛戒護浼氬皢媯鏌ョ殑緇撴灉涓嶅仠鍒鋒柊鏄劇ず鍦ㄥ睆騫曚笂錛岀洿鍒頒綘鐢–TRL-C鍛戒護緇撴潫瀹(鎴栬呬綘涔熷彲浠ュ湪鎵ц岀殑鏃跺欒劇疆涓涓闄愬埗)銆傝繖涓鎸佺畫杈撳嚭鐨勭粨鏋滄湁鏃跺欒鐢ㄦ潵瀵煎叆鍒版枃浠朵腑鐢ㄦ潵鍒嗘瀽鎬ц兘瓚嬪娍錛屼絾鏄鎴戜滑灝嗘壘鍒版洿濂界殑鏂瑰紡鏉ュ仛榪欎歡浜嬫儏錛屽湪鏂囩珷鍚庨潰鐨勯儴鍒嗕細浠嬬粛銆
絎涓鍒楁樉紺虹殑鏄澶勭悊鍣錛 r鍒楁槸寰呭懡鐨勫勭悊鍣錛岃宐鍒楁槸浼戠湢鐨勫勭悊鍣ㄣ傚傛灉浣犲湪榪欓噷鐪嬪埌濂藉氫釜寰呭懡鐨勫勭悊鍣錛岄偅璇存槑浣犲彲鑳藉湪鏌愪釜鍦版柟閬囧埌浜嗘ц兘鐡墮堛傜浜屽垪鏄劇ず鐨勬槸鍐呭瓨錛氳櫄鎷熺殑錛岀┖闂茬殑錛岀紦鍐插拰緙撳瓨鍐呭瓨銆傜涓夊垪鏄劇ず鐨勬槸浜ゆ崲瀛樺偍浠ュ強鍏蜂綋鏈夊氬皯鍐呭瓨鍦ㄥ拰紓佺洏鍋氫氦鎹銆傜鍥涘垪鍒欐槸I/O淇℃伅錛屾樉紺轟簡鍧楁湇鍔℃帴鏀跺拰鍙戦佺殑鍧楁暟鎹淇℃伅銆
鏈鍚庝袱鍒楁樉紺轟簡緋葷粺鍜孋PU鐩稿叧鐨勪俊鎮銆傜郴緇熷垪鏄劇ず鐨勬槸鍐茬獊鐨勬暟閲忓拰姣忕掗挓鐨勪氦鎹銆侰PU鍒楁槸鏄劇ず浜嗙壒鍒鏈夌敤鐨勪俊鎮銆傛瘡涓鍒嗗垪鏄劇ず浜嗕竴涓狢PU鏃墮棿鐨勭櫨鍒嗘瘮銆傝繖浜涘垎鍒楀備笅錛
US錛氳繍琛岀敤鎴蜂換鍔″拰浠g爜鑰楄垂鐨勬椂闂
SY:榪愯屽唴鏍告垨鑰呯郴緇熶唬鐮佽楄垂鐨勬椂闂
ID:絀洪棽鏃墮棿
WA:絳夊緟IO鑰楄垂鐨勬椂闂
ST:鉶氭嫙鏈哄崰鐢ㄧ殑鏃墮棿
VMSTAT鍛戒護鎿呴暱鐢ㄦ潵鏌ヨCPU浣跨敤鎯呭喌錛岃櫧鐒惰頒綇姣忎釜鍙傛暟涓昏佸彇鍐充簬鎸佺畫鐨勭洃鎺э紝鍥犱負瀵笴PU榪涜岀煭鏃墮棿鐨勮傚療浣犲彲鑳芥棤娉曡幏鐭CPU鐪熸g殑闂棰樻墍鍦ㄣ備綘闇瑕佹煡鐪嬮暱鏈熺殑榪愯岃秼鍔挎潵鑾峰緱涓涓紜鍒囩殑CPU鎬ц兘淇℃伅銆
涓夈乮ostat
鎴戜滑鎺ヤ笅鏉ヨ佽茬殑鍛戒護鏄疘OSTAT銆侷OSTAT鍛戒護(鍦║BUNTU銆佺孩甯藉拰FEDORA緋葷粺涓閮芥槸鐢盨YSSTAT杞浠跺寘鎻愪緵鐨)鍙浠ユ彁渚涗笁涓鎶ュ憡錛欳PU浣跨敤鐜囥佽懼囦嬌鐢ㄧ巼鍜岀綉緇滄枃浠剁郴緇熶嬌鐢ㄧ巼銆傚傛灉浣犱笉鍔犱換浣曞弬鏁板湴榪愯岃ュ懡浠わ紝瀹冧細鏄劇ず鎵鏈夎繖涓変釜鎶ュ憡錛屼綘鍙浠ラ氳繃鍔犲弬鏁-c銆-d鍜-h鏉ュ崟鐙鏄劇ず瀹冧滑涓鐨勪竴縐嶃
鍦ㄤ笂闈㈢殑鍥句腑浣犲彲浠ョ湅鍒板畠浠涓鐨勫叾涓涓や釜鎶ュ憡錛岀涓涓鏄疌PU浣跨敤鐜囷紝瀹冨皢鍚勮繘紼嬪崰鐢ㄧ殑CPU鐢ㄧ櫨鍒嗘瘮鍒嗙被鍒楀嚭鏉ヤ簡銆備綘鑳界湅鍒扮敤鎴瘋繘紼嬨佺郴緇熻繘紼嬨乮owait鍜岀┖闂叉椂闂寸瓑淇℃伅銆
絎浜屼釜鎶ュ憡鏄鍏充簬璁懼囦嬌鐢ㄧ巼錛屾樉紺轟簡瀹夎呭湪璇ヤ富鏈轟笂鐨勬瘡涓璁懼囧拰涓浜涙湁鐢ㄧ殑淇℃伅錛岃稿傛瘡縐掍紶杈撻噺銆佹暟鎹鍧楄誨啓錛屽苟涓斿厑璁鎬綘瀵規湁鎬ц兘闂棰樼殑璁懼囧仛鏍囪般備綘鍙浠ラ氳繃娣誨姞-k鎴栬-m鍙傛暟鏉ユ寜鐓у崈瀛楄妭鎴栬呭厗瀛楄妭鏄劇ず緇熻′俊鎮錛岃屼笉鏄浠ユ暟鎹鍧椾負鍗曚綅錛岃繖鏍峰湪鏌愪簺鎯呭喌涓嬩細鏇翠究浜庢煡闃呭拰鐞嗚В銆
鏈鍚庝竴涓鎶ュ憡錛屾病鏈夋埅鍥撅紝鏄劇ず鐨勪俊鎮鍜屼笂闈浠嬬粛鐨勮懼囦嬌鐢ㄧ巼鏈夌偣鐩鎬技錛屽彧鏄瀵硅薄浠庨檮浠剁殑璁懼囨崲鎴愪簡鎸傝澆鐨勭綉緇滄枃浠剁郴緇熴
鍥涖乫ree
涓嬩竴涓鍛戒護free錛屽彲浠ユ樉紺轟富鍐呭瓨鍜屼氦鎹㈠唴瀛樼殑緇熻¢噺銆
浣犲彲浠ラ氳繃娣誨姞-t鍙傛暟鏉ユ樉紺烘葷殑鍐呭瓨錛屾垨鑰呴氳繃娣誨姞-b鍙傛暟鍜-m鍙傛暟鏉ョ敤瀛楄妭鏁版樉紺(榛樿ゆ儏鍐墊槸鐢ㄥ崈瀛楄妭涓哄崟浣)銆
FREE鍛戒護榪樺彲浠ラ氳繃浣跨敤-s鍙傛暟鏉ヤ嬌鍏朵互鏌愪釜闂撮殧鏃墮棿鎸佺畫鍒鋒柊鍦拌繍琛岋細
$ free -s 5
榪欎釜鍛戒護鏄浠ユ瘡闅5縐掗挓鍒鋒柊涓嬈$殑鏂瑰紡榪愯孎REE鍛戒護騫惰緭鍑虹粨鏋溿
浜斻乻ar
璞℃垜浠瑙佽繃鐨勮稿氬叾瀹冨伐鍏蜂竴鏍鳳紝鎴戜滑鍙浠ョ敤sar鍛戒護鏉ユ敹闆嗐佹煡鐪嬪拰璁板綍鏈嶅姟鍣ㄧ殑鎬ц兘鏁版嵁銆傚畠姣旀垜浠瑙佽繃鐨勪換浣曠被浼煎伐鍏烽兘鏇村己澶э紝騫朵笖鍙浠ユ敹闆嗗拰鏄劇ず闀挎椂闂存電殑鏁版嵁銆傚湪綰㈠附鍜孶BUNTU涓婏紝瀹冮氳繃SYSSTAT鍖呮潵瀹夎呫傝╂垜浠浠庝笉娣誨姞浠諱綍鍙傛暟榪愯孲AR鍛戒護寮濮嬪惂錛
浠庤繖閲屾垜浠鍙浠ョ湅鍒皊ar鍛戒護鐨勫熀鏈杈撳嚭淇℃伅錛屽寘鎷珻PU緇熻(姣忛殧10鍒嗛挓涓嬈$殑鏁版嵁鍜屾渶鍚庣殑騫沖潎鏁版嵁)銆傝ヤ俊鎮鏄浠庝竴涓浠24灝忔椂涓哄崟浣嶄笉鍋滄敹闆嗕俊鎮鐨勬棩緇熻℃枃浠朵腑鎶撳彇鍑烘潵鐨(榪欎釜鏂囦歡瀛樺偍鍦ㄧ洰褰/var/log/sa/涓錛屽苟涓旇鍛戒護涓簊axx榪欐牱鐨勬牸寮忥紝xx浠h〃璇ユ暟鎹鏀墮泦鐨勬棩鏈)銆傚彟澶栧畠榪樻敹闆嗗叧浜庡唴瀛樸佽懼囥佺綉緇滅瓑鐨勭粺璁′俊鎮(渚嬪傦紝閫氳繃鍔-b鍙傛暟鍙浠ユ煡鐪嬪潡璁懼囩粺璁′俊鎮錛-n閲囨煡鐪嬬綉緇滄暟鎹錛-r鍙傛暟鐪嬪唴瀛樹嬌鐢)銆備綘榪樺彲浠ョ敤-A鍙傛暟鏉ユ煡鐪嬫墍鏈夋敹闆嗙殑鏁版嵁銆
浣犺繕鍙浠ラ暱鏃墮棿榪愯宻ar鍛戒護鐒跺悗灝嗚緭鍑烘暟鎹瀵煎叆涓涓鏂囦歡涓鏉ユ敹闆嗘暟鎹銆傝佽揪鍒拌繖涓鏁堟灉錛岄渶瑕佷嬌鐢ㄥ弬鏁-o鍜屼竴涓鏂囦歡鍚嶇О錛岃佽繍琛岃ュ懡浠ょ殑鏃墮棿闂撮殧(璁板緱鏀墮泦鏁版嵁浼氬艱嚧鎬ц兘鍙樺樊錛屾墍浠ユ渶濂界『淇濊繖涓闂撮殧涓嶈佸お鐭)鍜屽驚鐜鐨勬℃暟-浣犺佽板綍鐨勯棿闅旀℃暟銆傚傛灉浣犱笉杈撳叆寰鐜嬈℃暟錛屽垯sar鍛戒護浼氫竴鐩磋繍琛屼笅鍘伙紝渚嬪傦細
$ sar -A -o /var/log/sar/sar.log 600 /dev/null 21
榪欓噷鎴戜滑灝嗘敹闆嗘墍鏈夋暟鎹(-A),璁板綍鍒版枃浠/var/log/sar/sar.log涓錛屾瘡闅600縐(鎴栬5鍒嗛挓)鏀墮泦涓嬈★紝鎸佺畫鍦ㄥ悗鍙拌繍琛屻傚傛灉鎺ヤ笅鏉ユ垜浠鎯寵佹樉紺鴻繖涓鏁版嵁鎴戜滑鍙浠ョ敤sar鍛戒護鍔犱笂-f鍙傛暟錛屼緥濡傦細
$ sar -A -f /var/log/sar/sar.log
榪欐槸涓涓闈炲父鍩烘湰鐨剆ar鍛戒護浠嬬粛銆傜敤sar鍛戒護榪樺彲浠ュ緱鍒拌稿氬緢鏈夌敤鐨勬暟鎹錛岃繖鑳戒嬌寰楁煡鐪嬩富鏈烘ц兘鍙樺緱鏇村姞鏂逛究鍜屾湁鏁堛傛垜寤鴻浣犲幓鏌ョ湅涓涓媠ar鍛戒護鐨勮存槑鏂囨。浠庤岃幏寰楁洿璇︾粏鐨勬柟娉曟潵鑾峰緱浣犻渶瑕佺殑鏁版嵁銆
鎬葷粨錛
鎴戜滑鐪嬪埌浜5涓鍩烘湰鐨勭敤鍦╨inux涓繪満涓婄$悊鍜屾煡鐪嬫ц兘鐘舵佺殑鍛戒護宸ュ叿銆
闄ゆや箣澶栵紝鍘葷湅涓涓嬪叾瀹冧竴浜涘伐鍏峰俶unin鍜宑ollected絳変篃鏄闈炲父鍊煎緱鐨勶紝瀹冧滑涓嶄粎鏀墮泦鍏充簬鎬ц兘鐨勬暟鎹錛岃繕鑳芥煡鐪嬪簲鐢ㄧ▼搴忓拰鏈嶅姟絳夛紝鍖呮嫭浣跨敤浣犺嚜宸辯殑鎻掍歡絳夈
榪欎簺宸ュ叿閮芥敮鎸佸炲姞鍥懼艦鍖栫殑杈撳叆錛岃繖鏍峰彲浠ヨ╀綘鐢ㄥ浘褰㈡洿鐩磋傜殑鏌ョ湅浣犵殑鏁版嵁銆
『柒』 linux常用性能命令
一般常用的都是用來分析伺服器資源的,如磁碟,內存,cpu,網路等,具體分享如下四個。
1. 性能分析之 iostat 命令
iostat命令顯示的是你的存儲系統的細節狀態。iostat顯示系統三種類型的報告:CPU利用率、設備使用報告和網路文件系統報告等是否正常,完全可以在用戶抱怨伺服器慢之前,通過這個命令發現系統I/O方面的問題。
2. 性能分析之 top 命令使用
top命令可以顯示系統中的進程信息。默認情況下,top會按照CPU使用率從高到低來顯示系統中的進程,並且每5秒刷新一次排行榜。當然,你也可以讓top按照PID、進程壽命、CPU耗時、內存消耗等維度對進程進行排序。(可以使用P和M快捷鍵,分別是按CPU利用率排序、按內存使用量排序)通過top命令,你可以很快地發現那些失去控制或不符合預期的進程。
3. 性能分析之 vmstat 命令使用
vmstat命令是Virtual Meomory Statistics(虛擬內存統計)的縮寫,是常見的Linux/Unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率、內存使用、虛擬內存交換情況、IO讀寫情況。
4. 性能分析之 mpstat命令使用
mpstat是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPU系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。mpstat最大的特點是:可以查看多核cpu中每個計算核心的統計數據;而類似工具vmstat只能查看系統整體cpu情況。
『捌』 Linux系統監控要用到哪些命令
記錄一下自己常用的linux系統命令,方便以後查閱,發覺記憶越來越不行了
找到最耗CPU的java線程ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
結果展示:
這個命令的作用,主要是可以獲取到對應一個進程下的線程的一些信息。 比如你想分析一下一個java進程的一些運行瓶頸點,可以通過該命令找到所有當前Thread的佔用CPU的時間,也就是這里的最後一列。
比如這里找到了一個TID : 30834 ,所佔用的TIME時間最高。
通過 printf "%x\n" 30834 首先轉化成16進制, 繼續通過jstack命令mp出當前的jvm進程的堆棧信息。 通過Grep命令即可以查到對應16進制的線程id信息,很快就可以找到對應最耗CPU的代碼快在哪。
簡單的解釋下,jstack下這一串線程信息內容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 對應的linux操作系統下的tid,就是前面轉化的16進制數字
tid: 這個應該是jvm的jmm內存規范中的唯一地址定位,如果你詳細分析jvm的一些內存數據時用得上,我自己還沒到那種程度,所以先放下
top命令
命令:top -Hp pid
結果顯示:
和前面的效果一下,你可以實時的跟蹤並獲取指定進程中最耗cpu的線程。 再用前面的方法提取到對應的線程堆棧信息。
判斷I/O瓶頸
mpstat命令
命令:mpstat -P ALL 1 1000
結果顯示:
注意一下這裡面的%iowait列,CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
通過這個參數可以比較直觀的看出當前的I/O操作是否存在瓶頸
iostat命令
命令: iostat -m -x 1 1000
同樣你可以觀察對應的CPU中的%iowait數據,除此之外iostat還提供了一些更詳細的I/O狀態數據,比如比較重要的有:
avgqu-sz : The average queue length of the requests that were issued to the device. (磁碟隊列的請求長度,正常的話2,3比較好。可以和cpu的load一樣的理解)
await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一個I/O操作從wait到完成的總時間)
svctm和%util都是代表處理該I/O請求花費的時間和CPU的時間比例。 判斷是否瓶頸時,這兩個參數不是主要的
r/s w/s 和 rMB/s wMB/s 都是代表當前系統處理的I/O的一些狀態,前者是我們常說的tps,後者就是吞吐量。這也是評價一個系統的性能指標
pid命令
命令: pidstat -p pid -u -d -t -w -h 1 1000
結果顯示:
相當實用的一個命令,可以基於當個進程分析對應的性能數據,包括CPU,I/O,IR , CS等,可以方便開發者更加精細化的觀察系統的運行狀態。不過pidstat貌似是在2.6內核的一些較新的版本才有,需要安裝sysstat包。
ubuntu下,可以通過sudo apt-get install sysstat進行安裝。
sar命令
命令:sar -x pid 1 1000
sar也可以指定對應的pid,關注固定的幾個參數,沒有pidstat那麼強大。 看不到對應的I/O, IR等信息。
sar的功能可以覆蓋mpstat , iostat的相關功能。
dstat命令
命令:dstat -y --tcp 1 1000
通過dstat --tcp可以比較方便的看到當前的tcp的各種狀態,不需要每次netstat -nat去看
其他命令
netstat -natp : 查看對應的網路鏈接,關注下Recv-Q , Send-Q , State。
lsof -p pid : 查找對應pid的文件句柄
lsof -i : 80 : 查找對應埠被哪個進程佔用
lsof /tmp/1.txt :查找對應文件被哪個進程佔用
tcpmp / wireshark :抓包分析工具
jstat / jmap / jstack / jps 等一系列的java監控命令
最後
如果你想做一些性能調優的工作,一定要善於利用一些工具進行關注相應的狀態。通過linux命令你可以比較方便的觀測到CPU , I/O , network等一些比較外圍的狀態, 很多時候就已經可以解決大部分的問題。jvm內部的一些運行狀態監控,得需要藉助一些特有的工具進行細粒度的觀測。