1、如何監控linux伺服器上的數據
linux伺服器性能監測是很重要的工作,伺服器運行應該提供最有效的系統性能。當伺服器系統性能突然低於平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁碟的性能、網路流量和cpu
的壓力。在預算短缺的今天,理解如何優化系統性能比以往任何時候都重要。
要實現它的前提是,你必須充分了解自己的計算機和網路,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。使用的linux
發行版本是red
hat
enterprise
linux
4,工作過程是:首先查看整個系統的狀態,然後是檢查特定的子系統。
linux伺服器進行性能監控有幾種方法,每種方法都各有其優缺點。
使用snmp等標准工具
標准及非標准工具能執行一個或多個收集、合並及傳輸階段,如rstatd或snmp工具,然而標準的rstat後台程序提供的信息是有限的,速度慢而且效率低。
內核模塊
幾個系統監控工程利用內核模塊來存取監控數據。一般情況下,這是很有效的收集系統數據的方法。然而這種方法存在的問題是,當主內核源內有其它改變時,必須保持代碼一致性。一個內核模塊可能與用戶想使用的其它內核模塊相沖突。此外,在使用監控系統之前,用戶必須獲得或申請模塊。
/proc虛擬文件系統
/proc虛擬文件系統是一個較快的、高效率執行系統監控的方法。使用/proc的主要缺點是必須保持代碼分析與/proc
文件格式改變的同步。事實表明,linux內核的改變比/proc
文件格式的改變要更頻繁,所以,用/proc虛擬文件系統比用內核模塊存在的問題要少。本文介紹的方法即基於/proc虛擬文件系統。
一、
/proc文件系統特點
linux
系統向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核系統。這是通過
/proc
虛擬文件系統實現的。/proc
文件虛擬系統是一種內核和內核模塊用來向進程
(process)
發送信息的機制
(所以叫做
/proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取
有關進程的有用信息,在運行中
(on
the
fly)
改變設置
(通過改變內核參數)。
與其他文件系統不同,/proc
存在於內存之中而不是硬碟上。不用重新啟動而去看
cmos
,就可以知道系統信息。這就是
/proc
的妙處之一。
小提示:
每個linux系統根據軟硬體不同/proc
虛擬文件系統的內容也有些差異。/proc
虛擬文件系統有三個很重要的目錄:net,scsi和sys。sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴於內核配置。
2、如何在Loadrunner中監控linux伺服器的性能
公司使用的伺服器是linux的操作系統,之前很長一段時間監控系統參數都是使用top等linux命令來監控
這樣做的好處
1.可以非常容易的監控的系統的狀態
2.實時性非常強
不足之處
1.不能和loadrunner其他的圖表進行合並,造成了很難在事後分析出系統的問題
2.監控系統的數據無法直接保存,供下次參考使用
最近終於說服了公司的sa,讓我能在性能測試環境做必要的設置,因為之前sa一直認為我要做的事情會對系統的安全性造成影響。
現在我來介紹一下如何在linux設置來完成loadrunner對伺服器性能的監控
A.驗證伺服器上是否配置了rstatd守護程序
1. rup 127.0.0.1
2.find / -name rpc.rstatd
3./usr/sbin/rpcinfo -p
B.下載rpc.rstatd
http://sourceforge.net/projects/rstatd
C.打開埠映射
1.執行 setup命令
這時會彈出一個類似圖形化的界面,游標移動到System services,回車。在新界面中找到portmap項,空格選中。然後選擇OK,再選擇quit。
2./etc/rc.d/init.d/portmap start //啟動portmap
D.編譯安裝rstatd
./configure
make all-am
make install-am
E.起rstatd服務
/usr/local/sbin/rpc.rstatd
F.安裝xinetd服務
yum install xinetd.i386
/sbin/service xinetd restart
好了,liunx中的設置基本上都已經設置完了,接下來只要到loadrunner中加上對相應服務的監控就可以了
3、linux伺服器監控的幾個方法和命令
監控會降低性能的。同問filter、simls是什麼?沒用過。
當伺服器系統性能突然低於平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁碟的性能和CPU 的壓力。在預算有限的時代,理解如何優化系統性能比以往任何時候都重要。要實現它的前提是,你必須充分了解自己的伺服器,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。工作過程是:首先查看整個系統的狀態(伺服器整體)後是檢查特定的子系統(內存、處理器、IO等)。
一、系統負載監測
1.使用uptime命令
2.使用cron命令進行定時監測系統負載:
二、Unix進程運行的監測
1.使用ps命令
Unix系統提供了ps等察看進程信息的系統調用,通過結合使用這些系統調用,我們可以清晰地了解進程的運行狀態以及存活情況,從而採取相應的措施,來確保Unix系統的性能。它們是目前在Unix下最常見的進程狀況查看工具,是隨 Unix版本發行的,安裝好系統之後,用戶就可以使用。 這里以ps命令為例,ps命令是最基本同時也是非常強大的進程查看命令。利用它可以確定有哪些進程正在運行及運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等。ps命令可以監控後台進程的工作情況,因為後台進程是不和屏幕鍵盤這些標准輸入/輸出設備進行通信的
2.使用進程監控工具
如果安裝了CDE環境,可以使用圖形界面進程等系統信息,使用方法是單擊「前面板」上「工具」子面板上的「查找進程」控制項。 顯示「進程管理器」主窗口。它立即對工作站進行采樣,並顯示所有當前進程的采樣。
三、內存使用情況監測
內存是Unix內核所管理的最重要的資源之一。內存管理系統是操作系統中最為重要的部分,因為系統的物理內存總是少於系統所需要的內存數量。虛擬內存就是為了克服這個矛盾而採用的策略。系統的虛擬內存通過在各個進程之間共享內存而使系統看起來有多於實際內存的內存容量。Unix支持虛擬內存, 就是使用磁碟作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬碟,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。
4、如何從一台操作機監控多台linux伺服器的cpu利用率
推薦個監控軟體zabbix,如果你不嫌麻煩就用腳本監控系統性能?
這個只能根據實際環境寫,搜集系統性能後生成報告ftp到日誌伺服器。
或者scp 或者 rsync...
5、如何監控Linux伺服器上的每秒磁碟尋道
Windows性能計數器--磁碟性能析Disk
Physical Disk:
單IO
Avg.Disk Bytes/Read
Avg.Disk Bytes/Write
IO響應間
Avg.Disk sec/Read
Avg.Disk sec/Write
IOPS
DiskReads/sec
DiskWrites/sec
DiskTransfers/sec
IO吞吐率
DiskBytes/sec
DiskRead Bytes/sec
DiskWrite Bytes/sec
磁碟兩重要參數:Seek time、Rotational latency
I/O計數:①1000/(Seek time+Rotational latency)*0.75范圍內屬達85%I/O計數則基本認已經存I/O瓶頸理論情況磁碟隨機讀計數125、 順序讀計數225於數據文件言隨機讀寫志文件順序讀寫數據文件建議存放於RAID5志文件存放於RAID10或 RAID1
附:
15000 RPM:150隨機IOPS
10000 RPM:110隨機IOPS
5400 RPM:50隨機IOPS
面假設4塊硬碟RAID5觀察Physical Disk性能象部值:
Avg. DiskQueue Length 12 隊列度
Avg. DiskSec/Read .035 讀數據所用間ms
Avg. DiskSec/Write .045 寫數據所用間ms
DiskReads/sec 320 每秒讀數據量
DiskWrites/sec 100 每秒寫數據量
Avg. DiskQueue Length12/4=3每塊磁碟平均隊列建議超2
Avg. DiskSec/Read般要超11~15ms
Avg. DiskSec/Write般建議於12ms
面結我看磁碟本身I/O能力滿足我要求原量請求才導致隊列等待能SQL語句導致量表掃描所致進行優化能達要求面公式幫助計算使用幾塊硬碟滿足並發要求:
Raid 0 -- I/Os per disk = (reads +writes) / number of disks
Raid 1 -- I/Os per disk = [reads +(2 * writes)] / 2
Raid 5 -- I/Os per disk = [reads +(4 * writes)] / number of disks
Raid 10 -- I/Os per disk = [reads +(2 * writes)] / number of disks
我結:(320+400)/4=180根據公式①磁碟I/O值假設現I/O計數125達結:720/125=5.76說要用6塊磁碟才能達要求
面Disk Reads/secDisk Writes/sec難確估算值能系統比較忙概估算平均值作計算公式依據另難客戶Seek time、 Rotational latency參數值能用理論值125進行計算
前言
作資料庫管理員關注系統性能重要工作所關注各面性能能IO性能卻令痛塊面著各種澀參數令眼花繚亂新奇術語再加存儲廠商忽悠總讓我種雲霧覺本系列文章試圖基本概念始磁碟存儲相關各種概念進行綜合歸納讓家能夠IO性能相關基本概念IO性能監控調整比較全面解
部我先舍棄各種結構復雜存儲系統直接研究單獨磁碟性能問題藉解各衡量IO系統系能各指標及間關系
幾基本概念
研究磁碟性能前我必須先解磁碟結構及工作原理再重復說明關系硬碟結構工作原理信息參考維基百科面相關詞條——Hard disk drive(英文)硬碟驅器(文)
讀寫IO(Read/Write IO)操作
磁碟用給我存取數據用說IO操作候存兩種相應操作存數據候應寫IO操作取數據候應讀IO操作
單IO操作
控制磁碟控制器接操作系統讀IO操作指令候控制器給磁碟發讀數據指令並同要讀取數據塊址傳遞給磁碟磁碟讀取數據傳給控制器並由控制器返給操作系統完寫IO操作;同寫IO操作類似控制器接寫IO操作指令要寫入數據並其傳遞給磁碟磁碟數據寫入完操作結傳遞控制器再由控制器返給操作系統完寫IO操作單IO操作指完寫IO或者讀IO操作
隨機訪問(Random Access)與連續訪問(Sequential Access)
隨機訪問指本IO所給扇區址IO給扇區址相差比較磁兩IO操作間需要作比較移作才能重新始讀/寫數據相反IO給扇區址與IO結束扇區址致或者接近磁能快始IO操作IO操作稱連續訪問盡管相鄰兩IO操作同刻發請求扇區址相差能稱隨機訪問非連續訪問
順序IO模式(Queue Mode)/並發IO模式(BurstMode)
磁碟控制器能磁碟組發連串IO命令磁碟組能執行IO命令稱順序IO;磁碟組能同執行IO命令稱並發IO並發IO能發由磁碟組磁碟組單塊磁碟能處理IO命令
單IO(IO ChunkSize)
熟悉資料庫都概念資料庫存儲基本塊(Block Size)管SQL ServerOracle默認塊都8KB資料庫每讀寫都8k單位於資料庫應用發固定8k單讀寫寫磁碟層面呢於讀寫磁碟說單IO操作操作數據少呢固定值答案確定首先操作系統提高 IO性能引入文件系統緩存(File System Cache)系統根據請求數據情況自IO請求先放緩存面再性提交給磁碟說於資料庫發8K數據塊讀操作能放磁碟讀IO處理於些存儲系統提供緩存(Cache)接收操作系統IO請求操作系統 IO請求合並處理管操作系統層面緩存磁碟控制器層面緩存目都提高數據讀寫效率每單獨IO操作都主要取決於系統於數據讀寫效率判斷
IO操作比較候我IO操作比說1K4K8K;IO操作數據量比較候稱IO操作比說32K64K甚至更
我說塊(Block Size)候通我接觸類似概念像我面提資料庫面數據管理單位Oralce稱塊(Block)般8KSQL Server稱頁(Page)般8k文件系統面我能碰文件系統塊現Linux系統都4K(通 /usr/bin/time -v看)作用其實跟資料庫面塊/頁都便數據管理說單IO跟些塊都沒直接關系英文單IO通稱IO Chunk Size說IO Block Size
IOPS(IO per Second)
IOPSIO系統每秒所執行IO操作數重要用衡量系統IO能力參數於單磁碟組IO系統說計算IOPS件難事情要我知道系統完IO所需要間我能推算系統IOPS
現我推算磁碟IOPS假設磁碟轉速(Rotational Speed)15K RPM平均尋道間5ms傳輸速率40MB/s(讀寫速度視實際差別比較)
於磁碟說完整IO操作進行:控制器磁碟發IO操作命令候磁碟驅臂(ActuatorArm)帶讀寫磁(Head)離著陸區(LandingZone位於內圈沒數據區域)移要操作初始數據塊所磁軌(Track)程稱定址(Seeking)應消耗間稱定址間(SeekTime);找應磁軌能馬讀取數據候磁要等磁碟碟片(Platter)旋轉初始數據塊所扇區(Sector)落讀寫磁才能始讀取數據等待碟片旋轉操作扇區程消耗間稱旋轉延(RotationalDelay);接隨著碟片旋轉磁斷讀/寫相應數據塊直完IO所需要操作全部數據程稱數據傳送(DataTransfer)應間稱傳送間(TransferTime)完三步驟IO操作完
我看硬碟廠商宣傳單候我經能看3參數別平均定址間、碟片旋轉速度及傳送速度三參數提供給我計算述三步驟間
第定址間考慮讀寫數據能磁碟任意磁軌既能磁碟內圈(定址間短)能磁碟外圈(定址間)所計算我考慮平均定址間磁碟參數標明平均定址間採用前10krmp硬碟5ms
第二旋轉延定址磁定位磁軌能要讀寫扇區候需要額外額延立刻讀寫數據壞情況確實要磁碟旋轉整整圈磁才能讀取數據所我考慮平均旋轉延於10krpm磁碟(60s/15k)*(1/2)= 2ms
第三傳送間磁碟參數提供我傳輸速度要達種速度難度速度卻磁碟純讀寫磁碟速度要給定單IO我知道磁碟需要花費少間數據傳送間IOChunk Size / Max Transfer Rate
現我計算單IO間公式:
IO Time = Seek Time + 60 sec/Rotational Speed/2 + IO ChunkSize/Transfer Rate
於我計算IOPS
IOPS = 1/IO Time = 1/(Seek Time + 60 sec/Rotational Speed/2 + IOChunk Size/Transfer Rate)
於給定同IO我面系列數據
4K (1/7.1 ms = 140 IOPS)
5ms + (60sec/15000RPM/2) + 4K/40MB = 5 + 2 + 0.1 = 7.1
8k (1/7.2 ms = 139 IOPS)
5ms + (60sec/15000RPM/2) + 8K/40MB = 5 + 2 + 0.2 = 7.2
16K (1/7.4 ms = 135 IOPS)
5ms + (60sec/15000RPM/2) + 16K/40MB = 5 + 2 + 0.4 = 7.4
32K (1/7.8 ms = 128 IOPS)
5ms + (60sec/15000RPM/2) + 32K/40MB = 5 + 2 + 0.8 = 7.8
64K (1/8.6 ms = 116 IOPS)
5ms + (60sec/15000RPM/2) + 64K/40MB = 5 + 2 + 1.6 = 8.6
面數據看單IO越候單IO所耗費間越少相應IOPS越
面我數據都比較理想假設理想情況磁碟要花費平均定址間平均旋轉延假設其實比較符合我實際情況隨機讀寫隨機讀寫每IO操作定址間旋轉延都能忽略計兩間存限制IOPS現我考慮種相極端順序讀寫操作比說讀取存儲連續布磁碟文件文件存儲布連續磁完讀IO操作需要新定址需要旋轉延種情況我能IOPS值
4K (1/0.1 ms = 10000 IOPS)
0ms + 0ms + 4K/40MB = 0.1
8k (1/0.2 ms = 5000 IOPS)
0ms + 0ms + 8K/40MB = 0.2
16K (1/0.4 ms = 2500 IOPS)
0ms + 0ms + 16K/40MB = 0.4
32K (1/0.8 ms = 1250 IOPS)
0ms + 0ms + 32K/40MB = 0.8
64K (1/1.6 ms = 625 IOPS)
0ms + 0ms + 64K/40MB = 1.6
相比第組數據說差距非我要用IOPS衡量IO系統系能候我定要說清楚情況IOPS要說明讀寫式及單IO實際特別OLTP系統隨機IO讀寫說服力
傳輸速度(Transfer Rate)/吞吐率(Throughput)
現我要說傳輸速度(另見說吞吐率)磁碟所表明傳輸速度或者說理想傳輸速度磁碟實際使用候磁碟系統匯流排流數據量IOPS數據我容易能計算應傳輸速度
Transfer Rate = IOPS * IO Chunk Size
面第組IOPS數據我相應傳輸速度
4K: 140 * 4K = 560K / 40M = 1.36%
8K: 139 * 8K = 1112K / 40M = 2.71%
16K: 135 * 16K = 2160K / 40M = 5.27%
32K: 116 * 32K = 3712K / 40M = 9.06%
看實際傳輸速度匯流排利用率非
定要明確概念盡管面我使用IOPS計算傳輸速度實際傳輸速度IOPS沒直接關系沒緩存情況共同決定素都磁碟系統訪問式及單IO磁碟進行隨機訪問候我利用IOPS衡量磁碟系統性能傳輸速度太;磁碟進行連續訪問IOPS已經沒參考價值候限制實際傳輸速度卻磁碟傳輸速度實際應用用IOPS 衡量IO隨機讀寫性能要衡量IO連續讀寫性能候要採用傳輸速度能IOPS
IO響應間(IOResponse Time)
關注能直接描述IO性能IO響應間IO響應間稱IO延(IOLatency)IO響應間操作系統內核發讀或者寫IO命令操作系統內核接收IO應間注意要單IO間混淆單IO間僅僅指IO操作磁碟內部處理間IO響應間要包括IO操作IO等待隊列所花費等待間
計算IO操作等待隊列面消耗間衍於利托氏定理(Little』sLaw)排隊模型M/M/1模型遵循由於排隊模型算比較復雜現沒搞太明白(誰M/M/1模型比較精通歡迎給予指導)羅列結面計算IOPS數據說:
8K IO Chunk Size (135 IOPS, 7.2 ms)
135 => 240.0 ms
105 => 29.5 ms
75 => 15.7 ms
45 => 10.6 ms
64K IO Chunk Size(116 IOPS, 8.6 ms)
135 => 沒響應……
105 => 88.6 ms
75 => 24.6 ms
45 => 14.6 ms
面數據看隨著系統實際IOPS越接近理論值IO響應間非線性增越接近值響應間變越且比預期超般說實際應用70%指導值說IO讀寫隊列隊列於IOPS70%候IO響應間增加相說讓比較能接受旦超70%響應間戲劇性暴增所系統IO壓力超承受壓力70%候必須要考慮調整或升級
另外補充說70%指導值適用於CPU響應間實踐證明旦CPU超70%系統變受慢意思東西
篇文章計算我看15k轉速磁碟隨機讀寫訪問情況IOPS竟140左右實際應用我卻能看標5000IOPS甚至更高存儲系統IOPS存儲系統呢要歸結於各種存儲技術使用些存儲技術使用廣高速緩存(Cache)磁碟冗餘陣列(RAID)本文探討緩存磁碟陣列提高存儲IO性能
高速緩存(Cache)
各種存儲產品按照速度快慢應該內存>快閃記憶體>磁碟>磁帶速度越快意味著價格越高快閃記憶體雖說發展勢目前說卻價格問題普及現磁碟作霸王代與CPU內存速度相比磁碟速度疑計算機系統瓶頸所必須使用磁碟想提高性能情況想磁碟嵌入塊高速內存用保存經訪問數據提高讀寫效率折解決塊嵌入內存稱高速緩存
說緩存東西應用現已經處處於層應用操作系統層再磁碟控制器CPU內部單磁碟內部都存緩存所些緩存存目都相同提高系統執行效率我關跟IO性能相關緩存與IO性能直接相關幾緩存別文件系統緩存(FileSystem Cache)、磁碟控制器緩存(DiskController Cache)磁碟緩存(DiskCache,稱DiskBuffer)計算磁碟系統性能候文件系統緩存考慮內我重點考察磁碟控制器緩存磁碟緩存
管控制器緩存磁碟緩存所起作用主要三部:緩存數據、預讀(Read-ahead)寫(Write-back)
緩存數據
首先系統讀取數據緩存高速緩存再需要讀取相同數據候用訪問磁碟直接緩存取數據使用數據能緩存永久保留緩存數據般採取LRU算進行管理目間用數據清除緩存些經訪問卻能直保留緩存直緩存清空
預讀
預讀指採用預讀算沒系統IO請求候事先數據磁碟讀入緩存系統發讀IO請求候實現檢查看看緩存面否存要讀取數據存(即命)直接結返候磁碟再需要定址、旋轉等待、讀取數據序列操作能節省間;沒命則再發真讀取磁碟命令取所需要數據
緩存命率跟緩存關系理論緩存越所能緩存數據越命率自越高緩存能太畢竟本呢容量存儲系統配備讀緩存候問題比較緩存數據量非相比整存儲系統說比例非低隨機讀取(資料庫系統數情況)候命率自低緩存能提高效率(絕部讀IO都要讀取磁碟)反每匹配緩存浪費間
執行讀IO操作讀取數據存於緩存數量與全部要讀取數據比值稱緩存命率(ReadCache Hit Radio)假設存儲系統使用緩存情況隨機IO讀取能達150IOPS緩存能提供10%緩存命率實際IOPS達150/(1-10%)=166
寫
首先說用於寫功能部緩存稱寫緩存(WriteCache)套寫緩存打存儲操作系統所發系列寫IO命令並挨執行些寫IO命令先寫入緩存再性緩存修改推磁碟相於些相同IO合並連續操作IO合並IO隨機寫IO變組連續寫IO能減少磁碟定址等操作所消耗間提高磁碟寫入效率
讀緩存雖效率提高明顯所帶問題比較嚴重緩存普通內存掉點數據全部丟失操作系統發寫IO命令寫入緩存即認寫入功實際數據沒真寫入磁碟掉電緩存數據永遠丟失應用說災難性目前解決問題給緩存配備電池保證存儲掉電緩存數據能數保存
讀寫緩存存寫緩存命率(WriteCache Hit Radio)讀緩存命情況盡管緩存命能實際IO操作免掉合並已
控制器緩存磁碟緩存除面作用外承著其作用比磁碟緩存保存IO命令隊列功能單磁碟能處理IO命令卻能接收IO命令些進入磁碟未處理命令保存緩存IO隊列
RAID(Rendant Array Of InexpensiveDisks)
位資料庫管理員或者經接觸伺服器RAID應該熟悉作廉價存儲解決案RAID早已伺服器存儲普及RAID各級別應RAID10RAID5(RAID5已經基本走RAID6崛起看看解原)應用廣面RAID0RAID1RAID5RAID6RAID10幾種級別RAID展說磁碟陣列於磁碟性能影響閱讀面內容前必須各級別RAID結構工作原理要熟悉才行才至於滿霧水推薦查看wikipedia面條目:RAIDStandardRAID levelsNested RAID levels
6、Linux伺服器整體性能監控攻略 Linux伺服器如何監控整體性能?
Linux伺服器性能監測是很重要的工作,伺服器運行應該提供最有效的系統性能。當伺服器系統性能突然低於平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁碟的性能、網路流量和CPU 的壓力。在預算短缺的今天,理解如何優化系統性能比以往任何時候都重要。
要實現它的前提是,你必須充分了解自己的計算機和網路,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。使用的Linux 發行版本是Red Hat Enterprise Linux 4,工作過程是:首先查看整個系統的狀態,然後是檢查特定的子系統。
Linux伺服器進行性能監控有幾種方法,每種方法都各有其優缺點。
使用SNMP等標准工具
標准及非標准工具能執行一個或多個收集、合並及傳輸階段,如rstatd或SNMP工具,然而標準的rstat後台程序提供的信息是有限的,速度慢而且效率低。
內核模塊
幾個系統監控工程利用內核模塊來存取監控數據。一般情況下,這是很有效的收集系統數據的方法。然而這種方法存在的問題是,當主內核源內有其它改變時,必須保持代碼一致性。一個內核模塊可能與用戶想使用的其它內核模塊相沖突。此外,在使用監控系統之前,用戶必須獲得或申請模塊。
/proc虛擬文件系統
/proc虛擬文件系統是一個較快的、高效率執行系統監控的方法。使用/proc的主要缺點是必須保持代碼分析與/proc 文件格式改變的同步。事實表明,Linux內核的改變比/proc 文件格式的改變要更頻繁,所以,用/proc虛擬文件系統比用內核模塊存在的問題要少。本文介紹的方法即基於/proc虛擬文件系統。
一、 /proc文件系統特點
Linux 系統向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核系統。這是通過 /proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在於內存之中而不是硬碟上。不用重新啟動而去看 CMOS ,就可以知道系統信息。這就是 /proc 的妙處之一。
小提示: 每個Linux系統根據軟硬體不同/proc 虛擬文件系統的內容也有些差異。/proc 虛擬文件系統有三個很重要的目錄:net,scsi和sys。Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴於內核配置。
7、7.Linux伺服器整體性能監控攻略 Linux伺服器如何監控整體性能
幾個命令供你參考
w
top
free
還有以
stat結尾的命令,例如
iostat
等等的,都是可以監控linux的系統性能的。
8、linux下怎麼查看伺服器性能
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命令刷新,來記錄和比對數據。
9、jenkins怎麼監控linux性能
Linux伺服器性能監測是很重要的工作,伺服器運行應該提供最有效的系統性能。當伺服器系統性能突然低於平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁碟的性能、網路流量和CPU 的壓力。在預算短缺的今天,理解如何優化系統性能比以往任何時候都重要。
要實現它的前提是,你必須充分了解自己的計算機和網路,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。使用的Linux 發行版本是Red Hat Enterprise Linux 4,工作過程是:首先查看整個系統的狀態,然後是檢查特定的子系統。
Linux伺服器進行性能監控有幾種方法,每種方法都各有其優缺點。
使用SNMP等標准工具
標准及非標准工具能執行一個或多個收集、合並及傳輸階段,如rstatd或SNMP工具,然而標準的rstat後台程序提供的信息是有限的,速度慢而且效率低。
內核模塊
幾個系統監控工程利用內核模塊來存取監控數據。一般情況下,這是很有效的收集系統數據的方法。然而這種方法存在的問題是,當主內核源內有其它改變時,必須保持代碼一致性。一個內核模塊可能與用戶想使用的其它內核模塊相沖突。此外,在使用監控系統之前,用戶必須獲得或申請模塊。
/proc虛擬文件系統
/proc虛擬文件系統是一個較快的、高效率執行系統監控的方法。使用/proc的主要缺點是必須保持代碼分析與/proc 文件格式改變的同步。事實表明,Linux內核的改變比/proc 文件格式的改變要更頻繁,所以,用/proc虛擬文件系統比用內核模塊存在的問題要少。本文介紹的方法即基於/proc虛擬文件系統。
一、 /proc文件系統特點
Linux 系統向管理員提供了非常好的方法,使他們可以在系統運行時更改內核,而不需要重新引導內核系統。這是通過 /proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程 (process) 發送信息的機制 (所以叫做 /proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中 (on the fly) 改變設置 (通過改變內核參數)。 與其他文件系統不同,/proc 存在於內存之中而不是硬碟上。不用重新啟動而去看 CMOS ,就可以知道系統信息。這就是 /proc 的妙處之一。
小提示: 每個Linux系統根據軟硬體不同/proc 虛擬文件系統的內容也有些差異。/proc 虛擬文件系統有三個很重要的目錄:net,scsi和sys。Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴於內核配置。
10、幾個常用的linux性能監控命令
1. sar
每兩秒刷新一次, 總共5次
[root@dbhost01 ~]# sar 2 5
Linux 2.6.32-504.el6.x86_64 (dbhost01) 03/30/2018 _x86_64_ (4 CPU)
02:53:15 PM CPU %user %nice %system %iowait %steal %idle
02:53:17 PM all 0.66 0.00 1.72 0.66 0.00 96.96
02:53:19 PM all 1.34 0.00 3.35 0.80 0.00 94.51
02:53:21 PM all 0.79 0.00 1.59 1.45 0.00 96.17
02:53:23 PM all 0.40 0.00 2.00 0.80 0.00 96.80
02:53:25 PM all 0.66 0.00 1.85 0.79 0.00 96.70
Average: all 0.77 0.00 2.10 0.90 0.00 96.23
2. top
top -a 按照內存降序
[root@dbhost01 ~]# top -a
top - 15:00:54 up 6:04, 1 user, load average: 0.31, 0.19, 0.11
Tasks: 306 total, 1 running, 305 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.8%us, 2.4%sy, 0.0%ni, 88.9%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 4048972k total, 3848576k used, 200396k free, 134844k buffers
Swap: 4194300k total, 1788k used, 4192512k free, 1835360k cached
3. vmstat
vmstat用於顯示虛擬內存,內核線程,磁碟,系統進程, CPU活動等統計信息。
需要安裝sysstat工具。
[root@dbhost01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 1788 202508 135064 1835920 0 0 32 26 96 276 1 2 95 1 0
[root@dbhost01 ~]#
[root@dbhost01 ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 1788 202336 135068 1836000 0 0 32 26 97 276 1 2 95 1 0
0 0 1788 202624 135068 1836000 0 0 25 29 4012 6682 0 1 98 1 0
0 0 1788 202624 135072 1836004 0 0 57 87 4003 6685 0 1 98 1 0
1 0 1788 202508 135072 1836004 0 0 57 33 4402 7353 1 1 98 0 0
0 0 1788 202540 135076 1836004 0 0 33 47 4002 6674 0 1 98 1 0
4. lsof(list open files)
[root@dbhost01 ~]# lsof | grep 1521
certmonge 2348 root 16r FIFO 0,8 0t0 15212 pipe
certmonge 2348 root 18r FIFO 0,8 0t0 15218 pipe
gipcd.bin 2754 grid 109u unix 0xffff880139152180 0t0 36936 socket
5. tcpmp
tcpmp -i eth1
15:24:28.777779 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.777809 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.778976 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779011 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779013 IP 192.168.2.82.50990 > dbhost01.ssh: Flags [.], ack 393968, win 16652, options [nop,nop,TS val 2443327 ecr 22996360], length 0
15:24:28.779481 IP dbhost02-priv.23602 > dbhost01-priv.24271: UDP, length 556
15:24:28.779585 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 80
15:24:28.779909 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 80
15:24:28.780584 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780590 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780820 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 556
15:24:28.782232 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
15:24:28.782235 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
6.netstat
[root@dbhost01 ~]# netstat -a | grep oracle
unix 2 [ ACC ] STREAM LISTENING 31861 /var/tmp/.oracle/ora_gipc_sdbhost01gridmyracdb-clusterCRFM_SIPC
unix 2 [ ACC ] STREAM LISTENING 33820 /var/tmp/.oracle/sdbhost01DBG_LOGD
unix 2 [ ACC ] STREAM LISTENING 41177 /var/tmp/.oracle/sdbhost01DBG_EVMD
unix 2 [ ACC ] STREAM LISTENING 65106 /var/tmp/.oracle/sAevm
unix 2 [ ACC ] STREAM LISTENING 65108 /var/tmp/.oracle/sSYSTEM.evm.acceptor.auth
7. htop
需要安裝
8. iostat
Total DISK READ: 91.48 K/s | Total DISK WRITE: 45.27 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
4071 be/4 oracle 30.18 K/s 0.00 B/s 0.00 % 4.69 % ora_lmon_orcl1
4117 be/4 oracle 60.36 K/s 15.09 K/s 0.00 % 3.69 % ora_ckpt_orcl1
2989 rt/4 grid 965.71 B/s 0.00 B/s 0.00 % 2.13 % ocssd.bin
4099 be/4 oracle 0.00 B/s 30.18 K/s 0.00 % 0.07 % ora_ckpt_test
2987 rt/4 grid 0.00 B/s 482.86 B/s 0.00 % 0.03 % ocssd.bin
2979 rt/3 root 0.00 B/s 3.77 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
2980 rt/3 root 0.00 B/s 15.09 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
9. iftop(流量監控工具)