⑴ linux系統怎麼查看cpu使用情況
1、查看內存:在SSH遠程式控制制端,輸入命令「cat /proc/meminfo」,按下「Enter」回車鍵,即可看到總的內存佔用情況。
2、查看CPU:在SSH遠程式控制制端,輸入命令「top」,按下「Enter」回車鍵,即可看到cpu的使用率。
3、Linux上的VNC服務端,比較常用的就是tigervnc和x11vnc。x11vnc可以讓遠程訪問者控制本地的實際顯示器,而tigervnc既可以遠程式控制制實際顯示器,還可以控制平行獨立於當前物理顯示器的虛擬顯示器。
中央處理器(Central Processing Unit),簡稱CPU,是1971年推出的一個計算機的運算核心和控制核心,是信息處理、程序運行的最終執行單元。
中央處理器包含運算邏輯部件、寄存器部件和控制部件等,並具有處理指令、執行操作、控制時間、處理數據等功能。
CPU包括運算邏輯部件、寄存器部件和控制部件等。[1]
邏輯部件
英文Logic components;運算邏輯部件,可以執行定點或浮點算術運算操作、移位操作以及邏輯操作,也可執行地址運算和轉換。
寄存器
中央處理器
中央處理器
寄存器部件,包括通用寄存器、專用寄存器和控制寄存器。
通用寄存器又可分定點數和浮點數兩類,它們用來保存指令執行過程中臨時存放的寄存器操作數和中間(或最終)的操作結果。
通用寄存器是中央處理器的重要組成部分,大多數指令都要訪問到通用寄存器。通用寄存器的寬度決定計算機內部的數據通路寬度,其埠數目往往可影響內部操作的並行性。
專用寄存器是為了執行一些特殊操作所需用的寄存器。
控制寄存器(CR0~CR3)用於控制和確定處理器的操作模式以及當前執行任務的特性。CR0中含有控制處理器操作模式和狀態的系統控制標志;CR1保留不用;CR2含有導致頁錯誤的線性地址;CR3中含有頁目錄表物理內存基地址.
控制部件
英文Control unit;控制部件,主要是負責對指令解碼,並且發出為完成每條指令所要執行的各個操作的控制信號。
其結構有兩種:一種是以微存儲為核心的微程序控制方式;一種是以邏輯硬布線結構為主的控制方式。
微存儲中保持微碼,每一個微碼對應於一個最基本的微操作,又稱微指令;各條指令是由不同序列的微碼組成,這種微碼序列構成微程序。中央處理器在對指令解碼以後,即發出一定時序的控制信號,按給定序列的順序以微周期為節拍執行由這些微碼確定的若干個微操作,即可完成某條指令的執行。
簡單指令是由(3~5)個微操作組成,復雜指令則要由幾十個微操作甚至幾百個微操作組成。
⑵ linux 下查看網路負載命令
用 netstat 查看 Linux 網路狀況。
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
前面的 netstat -n是netstat的命令,Windows和Linux都可以用,結果顯示內容差不多
後面的 awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 是Linux下的命令,主要作用是對netstat輸出的結果進行過濾和處理:
運行這一句之後,顯示的結果類似如下:
TIME_WAIT 27
FIN_WAIT1 435
FIN_WAIT2 89
ESTABLISHED 82
SYN_RECV 64
CLOSING 4
LAST_ACK 90
內容解釋如下:
TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2:從遠程TCP等待連接中斷請求
ESTABLISHED:代表一個打開的連接
SYN-RECV:再收到和發送一個連接請求後等待對方對連接請求的確認
SYN-SENT:再發送連接請求後等待匹配的連接請求
CLOSING:等待遠程TCP對連接中斷的確認
CLOSED:沒有任何連接狀態
CLOSE-WAIT:等待從本地用戶發來的連接中斷請求
LAST-ACK:等待原來的發向遠程TCP的連接中斷請求的確認
LISTEN:偵聽來自遠方的TCP埠的連接請求
⑶ 如何查看linux伺服器硬碟IO讀寫負載
打開終端
用top命令查看。輸入:
top#查看swap
iostat-x110#查看%util%idle
#如果iostat沒有要yuminstallsysstat
#如果%util接近100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。idle小於70%IO壓力就較大了,一般讀取速度有較多的wait.
#如果你想對硬碟做一個IO負荷的壓力測試可以用如下命令
timeddif=/dev/zerobs=1Mcount=2048of=direct_2G
#此命令為在當前目錄下新建一個2G的文件
歡迎追問
⑷ Linux系統下怎麼查看應用CPU、內存、負載
Linux 系統中―/proc‖是個偽文件目錄,不佔用系統空間,及時的反應出內存現在使用的進程情況......其中許多文件都保存系統運行狀態和相關信息對於―/proc‖中文件可使用文件查看命令瀏覽其內容,文件中包含系統特定信息:
cpuinfo 主機CPU 信息
filesystems 文件系統信息
meninfo 主機內存信息
version Linux 內存版本信息
diskstatus 磁碟負載情況
另外top 命令可以動態的顯示當前系統進程用戶的使用情況,而且是動態的顯示出來,尤其是在該命令顯示出來的對上方對系統的情況進行匯總.
free 命令呢可以查看真實使用的內存 一般用free -m
使用lsof 、ps -aux 可以查看詳細的每個進程的使用狀況
dmesg 也是常用來查看系統性能的命令
⑸ Linux裡面uptime命令作用是什麼
[root@oldboy ~]# uptime
11:45:25 up 5 days, 13:20, 3 users, load average: 0.00, 0.01, 0.05
uptime內容顯示的內容一次是系統時間,開機到現在的天數,用戶登錄數,以及平均負載。
核心是平均負載,其實就是【單位時間內的活躍進程數】。
2顆,單顆4核CPU為例:
1分鍾:10.00 #CPU處理進程1分鍾的繁忙程度,忙碌1分鍾。
5分鍾:8.01 #CPU處理進程5分鍾的繁忙程度,忙碌了5分鍾
15分鍾:5.05 #CPU處理進程15分鍾的繁忙程度,忙碌持續15分鍾,15分鍾內平均值5.
uptime:故障恢復了。
1分鍾:1.00 #CPU處理進程1分鍾的繁忙程度,忙碌1分鍾。
5分鍾:8.01 #CPU處理進程5分鍾的繁忙程度,忙碌了5分鍾
15分鍾:5.05 #CPU處理進程15分鍾的繁忙程度,忙碌持續15分鍾,15分鍾內平均值5.
==============================================
總結:15分鍾負載值12,是高是低呢
負載數值/總的核心數=1 #開始慢的臨界點,實際上1*70%==關注的臨界點。
12/8=1.2 大於1就說明有問題。
負載不要超過5,是臨界點。
2顆單顆4核CPU,共8核,負載就是8*70%=5左右。
需要關注負載的值:總的核心數*70%=關注的點
==================要掌握的============================
1.平均負載是運行隊列中活躍的進程數。
2.平均負載,1,5,15分鍾內的負載。
3.需要關注負載的值:總的核心數*70%=關注的點
4.輔助top,ps,uptime,sar,mpstat,pidstat,iostat,排查問題。
5.strace跟蹤進程系統調用。
6.記住幾個案例(面試講故事)。
面試官問:
你在工作中遇到過哪些生產故障,是怎麼解決的?
最好和資料庫相關(負載高),和web相關(PHP進程100%,JAVA內存泄漏)
==================要掌握的============================
***6.平均負載案例分析實戰\***
下面,我們以三個示例分別來看這三種情況,並用 stress、mpstat、pidstat 等工具,找出平均負載升高的根源。
stress 是 Linux 系統壓力測試工具,這里我們用作異常進程模擬平均負載升高的場景。
mpstat 是多核 CPU 性能分析工具,用來實時查看每個 CPU 的性能指標,以及所有 CPU 的平均指標。
pidstat 是一個常用的進程性能分析工具,用來實時查看進程的 CPU、內存、I/O 以及上下文切換等性能指標。
#如果出現無法使用mpstat、pidstat命令查看%wait指標建議更新下軟體包
yum install sysstats -y
yum install stress -y
stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
***場景一:CPU 密集型進程\***
1.首先,我們在第一個終端運行 stress 命令,模擬一個 CPU 使用率 100% 的場景:
[root@oldboy ~]# stress --cpu 1 --timeout 600
2.接著,在第二個終端運行 uptime 查看平均負載的變化情況
# 使用watch -d 參數表示高亮顯示變化的區域(注意負載會持續升高)
[root@oldboy ~]# watch -d uptime
*3.最後,在第三個終端運行 mpstat 查看 CPU 使用率的變化情況*
# -P ALL 表示監控所有CPU,後面數字5 表示間隔5秒後輸出一組數據
[root@oldboy ~]# mpstat -P ALL 5
#單核CPU,所以只有一個all和0
4.從終端二中可以看到,1 分鍾的平均負載會慢慢增加到 1.00,而從終端三中還可以看到,正好有一個 CPU 的使用率為 100%,但它的 iowait 只有 0。這說明,平均負載的升高正是由於 CPU 使用率為 100% 。那麼,到底是哪個進程導致了 CPU 使用率為 100% 呢?可以使用 pidstat 來查詢
![](18.Linux系統管理-進程管理.assets/a.png)
# 間隔5秒輸出一組數據
[root@oldboy ~]# pidstat -u 5 1
#從這里可以明顯看到,stress進程的CPU使用率為100%。
- 模擬cpu負載高 `stress --cpu 1 --timeout 100`
- 通過uptime或w 查看 `watch -d uptime`
- 查看整體狀態mpstat -P ALL 1 查看每個cpu核心使用率
- 精確到進程: pidstat 1
****場景二:I/O 密集型進程\****
1.首先還是運行 stress 命令,但這次模擬 I/O 壓力,即不停地執行 sync
[root@oldboy ~]# stress --io 1 --timeout 600s #利用sync()
stress --hdd 8 --hdd-bytes 1g # hd harkdisk 創建進程去進程寫
*2.然後在第二個終端運行 uptime 查看平均負載的變化情況:*
[root@oldboy ~]# watch -d uptime
18:43:51 up 2 days, 4:27, 3 users, load average: 1.12, 0.65, 0.00
*3.最後第三個終端運行 mpstat 查看 CPU 使用率的變化情況:*
# 顯示所有 CPU 的指標,並在間隔 5 秒輸出一組數據
[root@oldboy ~]# mpstat -P ALL 5
#會發現cpu的與內核打交道的sys佔用非常高
*4.那麼到底是哪個進程,導致 iowait 這么高呢?我們還是用 pidstat 來查詢*
# 間隔5秒後輸出一組數據,-u 表示CPU指標
[root@oldboy ~]# pidstat -u 5 1
#可以發現,還是 stress 進程導致的。
- 通過stress 模擬大量進程讀寫 `stress --hdd 4 `
- 通過w/uptime查看系統負載信息 `watch -d uptime`
- 通過top/mpstat 排查 `mpstat -P ALL 1 或 top 按1`
- 確定是iowati `iostat 1查看整體磁碟讀寫情況 或iotop -o 查看具體哪個進程讀寫`
- 根據對應的進程,進行相關處理.
***場景三:大量進程的場景 高並發場景 \***
*當系統中運行進程超出 CPU 運行能力時,就會出現等待 CPU 的進程。*
*1.首先,我們還是使用 stress,但這次模擬的是 4 個進程*
[root@oldboy ~]# stress -c 4 --timeout 600
*2.由於系統只有 1 個 CPU,明顯比 4 個進程要少得多,因而,系統的 CPU 處於嚴重過載狀態*
*3.然後,再運行 pidstat 來看一下進程的情況:*
# 間隔5秒後輸出一組數據
[root@oldboy ~]# pidstat -u 5 1
*可以看出,4 個進程在爭搶 1 個 CPU,每個進程等待 CPU 的時間(也就是代碼塊中的 %wait 列)高達 75%。這些超出 CPU 計算能力的進程,最終導致 CPU 過載。*
****分析完這三個案例,我再來歸納一下平均負載與CPU\****
***平均負載提供了一個快速查看系統整體性能的手段,反映了整體的負載情況。但只看平均負載本身,我們並不能直接發現,到底是哪裡出現了瓶頸。所以,在理解平均負載時,也要注意:
平均負載高有可能是 CPU 密集型進程導致的;
平均負載高並不一定代表 CPU 使用率高,還有可能是 I/O 更繁忙了;
當發現負載高的時候,你可以使用 mpstat、pidstat 等工具,輔助分析負載的來源****
**系統負載的計算和意義**
進程以及子進程和線程產生的計算指令都會讓cpu執行,產生請求的這些進程組成"運行隊列",等待cpu執行,這個隊列就是系統負載, 系統負載是所有cpu的運行隊列的總和.
[root@oldboye ~]# w
20:25:48 up 95 days, 9:06, 1 user, load average: 2.92, 0.00, 0.00
//假設當前計算機有4個核心的cpu,當前的負載是2.92
cpu1 cpu2 cpu3 cpu4
2.94/4(個cpu核心) = 73%的cpu資源被使用,剩下27%的cpu計算資源是空想的
//假設當前的計算有2個核心的cpu,當前的負載是2.92
2.92/2 = 146% 已經驗證超過了cpu的處理能力
7. 日常故障排查流程(含日誌)
- w/uptime, 查看負載
- ps aux/top 看看 cpu百分比, io wait或者是內存佔用的高? (三高 cpu,io,內存)
- top檢查具體是哪個進程,找出可疑進程
- 追蹤這個進程使用情況,做什麼的?
- 看看對應**日誌**是否有異常
- 系統日誌: /var/log/messages(系統通用日誌) /var/log/secure(用戶登錄情況)
- 服務軟體的日誌
***3.那平均負載為多少時合理\***
*最理想的狀態是每個 CPU核心 上都剛好運行著一個進程,這樣每個 CPU 都得到了充分利用。所以在評判平均負載時,首先你要知道系統有幾個 CPU核心,這可以通過 top 命令獲取,或`grep 'model name' /proc/cpuinfo`*
系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程數。如果一個進程滿足以下條件則其就會位於運行隊列中:
- 它沒有在等待I/O操作的結果
- 它沒有主動進入等待狀態(也就是沒有調用'wait')
- 沒有被停止(例如:等待終止)
《內容來自老男孩老師的課堂筆記》
⑹ 如何查看當前Linux系統的狀態,如CPU使用,內存使用,負載情況等.
可以用TOP工具查看實時狀態。
top進入視圖:
第一行:
10:01:23 當前系統時間
126 days, 14:29 系統已經運行了126天14小時29分鍾(在這期間沒有重啟過)
2 users 當前有2個用戶登錄系統
load average: 1.15, 1.42, 1.44 load average後面的三個數分別是1分鍾、5分鍾、15分鍾的負載情況。
load average數據是每隔5秒鍾檢查一次活躍的進程數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
第二行:
Tasks 任務(進程),系統現在共有183個進程,其中處於運行中的有1個,182個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。
第三行:cpu狀態
6.7% us 用戶空間佔用CPU的百分比。
0.4% sy 內核空間佔用CPU的百分比。
0.0% ni 改變過優先順序的進程佔用CPU的百分比
92.9% id 空閑CPU百分比
0.0% wa IO等待佔用CPU的百分比
0.0% hi 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si 軟中斷(Software Interrupts)佔用CPU的百分比
第四行:內存狀態
8306544k total 物理內存總量(8GB)
7775876k used 使用中的內存總量(7.7GB)
530668k free 空閑內存總量(530M)
79236k buffers 緩存的內存量 (79M)
第五行:swap交換分區
2031608k total 交換區總量(2GB)
2556k used 使用的交換區總量(2.5M)
2029052k free 空閑交換區總量(2GB)
4231276k cached 緩沖的交換區總量(4GB)
⑺ 如何查看伺服器當前的負載信息
做壓力測試的時候想看看linux伺服器當前負載如何,性能怎樣,可以使用下面這些命令
uptime
顯示當前用戶數,以及最近1
分鍾內、5分鍾內、15
分鍾內系統的平均負載
cat
/proc/loadavg
用於顯示系統1秒鍾平均負載、5秒鍾平均負載、15秒鍾平均負載、總作業數、正在運行的作業總數
cat
/proc/stat
這個顯示的內容較多,具體的就不一一列舉了,需要的朋友可以自己查閱相關資料
⑻ Linux常用性能診斷命令詳解
top命令動態地監視進程活動與系統負載等信息。
使用示例:
效果如下圖:
以上命令輸出視圖中分為兩個區域,一個統計信息區,一個進程信息區。
統計信息區:
第一行信息依次為:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鍾、5分鍾、15分鍾內的平均值,數值越小意味著負載越低)。
第二行信息依次為:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數。
第三行信息依次為:用戶佔用資源百分比、系統內核佔用資源百分比、改變過優先順序的進程資源百分比、空閑的資源百分比等。
第四行信息依次為:物理內存總量、內存使用量、內存空閑量、作為內核緩存的內存量。
第五行信息依次為:虛擬內存總量、虛擬內存使用量、虛擬內存空閑量、預載入內存量。
進程信息區:
按 q 鍵退出監控頁面。
uptime 用於查看系統的負載信息。
使用示例:
查看系統的負載信息。
效果如下圖:
輸出說明:
當前伺服器時間:11:06:57
當前伺服器運行時長:59 min
當前用戶數:1 users
當前負載情況:load average: 0.00, 0.04, 0.08(分別取1min,5min,15min的均值)
free用於顯示當前系統中內存的使用量信息。
命令語法: free [-bkmotV][-s <間隔秒數>]
參數說明:
使用示例:
顯示當前系統中內存的使用量信息。
效果如下圖:
輸出說明:
ifconfig命令用於獲取網卡配置與網路狀態等信息。
使用示例:
獲取網卡配置與網路狀態等信息。
效果如下圖:
輸出說明:
第一部分的第一行顯示網卡狀態信息。
eth0表示第一塊網卡。
UP代表網卡開啟狀態。
RUNNING代表網卡的網線被接上。
MULTICAST表示支持組播。
第二行顯示網卡的網路信息。
inet(IP地址):172.16.67.50。
netmask(掩碼地址):255.255.0.0。
broadcast(廣播地址):172.16.255.255。
RX表示接收數據包的情況,TX表示發送數據包的情況。
lo表示主機的回環網卡,是一種特殊的網路介面,不與任何實際設備連接,而是完全由軟體實現。與回環地址(127.0.0.0/8 或 ::1/128)不同,回環網卡對系統顯示為一塊硬體。任何發送到該網卡上的數據都將立刻被同一網卡接收到。