CPU方面的告警,使用如下工具命令保留現場node
1) 實時性能數據使用glance(c查看單個CPU,g查看進程,G查看線程)ios
2) 使用sar m n (m表明取值間隔,n表明取值次數)查看CPU使用率變化趨勢api
3) 使用kiinfo深度檢查,主要用法有緩存
a) Kiinfo –h 顯示幫助信息服務器
b) kiinfo –kipid pid=XXX(想深刻分析的進程PID的調用、線程信息、物理IO、邏輯IO、進程等待等信息)網絡
c) kiinfo –kipid oralce(分析oralce用戶的進程信息)多線程
4) 使用lsof查看某個進程打開的文件句柄tcp
Lsof -n –p PIDide
1) 實時性能數據使用glance(m查看內存信息)函數
2) 執行:vmstat m n(m表明取值間隔,n表明取值次數)
3) 執行swapinfo –atm 查看swap區使用狀況
4) 使用kmeminfo深度檢查
a) Kmeminfo 顯示內存的使用
b) Kmeminfo –user max=5 查看使用物理內存前5名的進程
c) Kmeminfo –u oralce查看具體用戶進程佔用內存的狀況
d) Kmeminfo –u 查看全部用戶進程佔用內存的狀況
1) 實時性能數據使用glance(u以磁盤爲標準查看,U以HBA卡爲標準查看,v以LV爲標準查看,i以文件系統爲標準查看)
2) 執行sar –d m n (m表明取值間隔,n表明取值次數)觀察磁盤使用率的變化趨勢
3) sar –H m n (m表明取值間隔,n表明取值次數)觀察以HBA的使用率的變化趨勢
4) 使用lsof查看打開某個文件的進程列表
Lsof /tmp/xxx
5) 使用kiinfo查看IO和HBA信息
Kiinfo –kidisk dev= 0x1f006000 –a 15 –p 1 (-a指收集15秒內的數據,-p表明收集1次)
6) 使用runki深度查看IO的調用,物理、邏輯、等待事件等。
Runki –msk –d 10 (收集10秒數據) ,收集到的文件保存在本地,此命令收集的信息較大,建議選取文件系統較大的目錄進行收集,以10秒爲間隔。
1) 實時數據使用glance,l查看lan的傳輸量
2) 執行:netstat –in 查看各個lan的IP地址和error
3) 執行:netstat –rn 查看路由
4) 執行:netstat –an 查看網絡連接
5) 執行:netstat –s 查看網絡統計數據
6) 執行:netfmt –f /var/adm/nettl.LOG000查看網絡日誌有無報錯
7) 執行:ping 目標IP 查看連通性
8) 使用lsof查看打開制定端口的進程
a) lsof -nP -i tcp:842 #列出TCP端口842的信息
b) lsof -nP -i tcp:telnet #列出Telnet端口的信息
c) lsof -i -P |grep <port #> #列出打開相應端口號的進程
d) lsof -nP -i tcp:telnet #列出Telnet端口的信息
9) 使用lanshow工具深度查看,工具保存
Lanshow –f >lanshow.out
10) 使用tcpdump收集網絡包數據
a) tcpdump host 11.156.108.1 查看到達或離開11.156.108.1的包
b) tcpdump host 11.156.108.1 and 11.156.108.2 查看11.156.108.1和11.156.108.2的網絡數據
c) tcpdump tcp port 23 host 210.27.48.1獲取主機210.27.48.1接收或發出的telnet包
d) tcpdump udp port 123對本機的udp 123 端口進行監視
e) tcpdump -i eth0 src host 11.156.108.1系統將只對11.156.108.1的主機的通訊數據包進行監視
系統CPU是整個系統的核心資源,一般也是系統的最繁忙部分,某些用戶應用須要進行大量計算,因此CPU是能夠保持繁忙的。一般服務器都配置多個CPU,用sar命令能夠收集每一個CPU的使用狀況,圖示命令以2秒間隔收集12次CPU使用比例數據,紅框內的數據反映了CPU的平均使用狀況。若是隻有部分CPU繁忙,其它CPU保持空閒,能夠調查應用運行特色,單線程的應用只能運行在單個CPU上,不能充分利用多個CPU的計算能力,因此儘可能配置應用爲多進程多線程應用。
在topas監控界面,使用c命令能夠切換到CPU視圖,從而觀察每一個CPU的使用狀況。以下圖所示
做爲nmon工具的重要組成命令,vmstat也收集CPU使用狀況數據,以下圖所示。
當已肯定CPU繁忙時,須要肯定哪些進程正在消耗CPU資源,在topas監控界面,使用P命令能夠切換到進程視圖,移動光標到CPU%列,將對進程按照CPU使用量降序排列,大部分的CPU資源應該消耗在系統的核心應用進程上,若是出現非核心應用進程佔用大量CPU資源,應該分析該進程的做用和產生緣由,應避免出現CPU資源浪費在與業務無關的進程的狀況。
進一步分析進程和系統命令對CPU資源的使用狀況使用tprof -usekj -x sleep 9命令,該命令收集9秒的系統數據並生成以下圖所示報告,收集數據時間長短可調整。
經過以上命令能夠得到佔用CPU資源較多的函數調用,爲代碼級的性能調整提供了線索。
當系統持續進行換頁操做時,能夠肯定物理內存資源緊張或者內存資源分配不合理。這時首先要肯定經過調整虛擬內存管理器內核參數從新分配內存資源可否解決物理內存資源不足的問題。使用svmon命令能夠得到物理內存使用的整體信息。內存的size值給出了系統裝配的物理內存頁面數,virtual值給出了系統工做所需的頁面數,若是virtual(系統運行須要的內存,計算型內存)值大於size值表示物理內存資源不足,換頁不可避免,此時只能在硬件上升級物理內存或者配置用戶應用減少應用對內存的需求量來解決此性能問題。
做爲nmon工具的重要組成命令,vmstat收集內存使用數據和換頁數據,以下圖所示。內存的fre列表示空閒的物理內存頁面數,內存的avm(對應svmon命令的virtual)列表示系統工做所需的頁面數,若是此頁面數對應的容量大於系統物理內存容量,則換頁不可避免。
使用lsps命令能夠收集換頁空間的使用狀況,換頁空間使用率高並持續增長是物理內存資源不足的表現。
使用vmstat –v命令得到當前系統物理內存中計算內存和文件緩存的配置參數和當前的使用狀況。
當系統工做內存不足時,以下命令限制文件緩存對物理內存的佔用比例。
# vmo –p –o lru_file_repage=0 –o maxclient%=90 –o maxperm%=90 –o minperm%=3
使用svmon –S命令能夠得到全部虛擬內存段對物理內存的使用狀況。
使用svmon –S -s命令能夠得到全部系統內核內存段對物理內存的使用狀況。
使用svmon –U命令能夠列出全部用戶對物理內存的使用狀況。
使用svmon –P命令能夠列出全部進程對物理內存的使用狀況。
使用svmon –P pid命令能夠顯示特定進程對物理內存的使用狀況。
使用svmon –C命令能夠顯示由特定命令構成的全部進程對物理內存的使用狀況。
當觀測到系統帶寬保持繁忙,使用iostat命令收集磁盤使用數據,此命令能夠收集磁盤帶寬的使用率和磁盤I/O數據吞吐量,能夠大體估計系統數據吞吐量與應用負載是否相匹配,避免與業務無關的大量I/O操做。
使用df命令顯示文件系統剩餘容量,文件系統剩餘容量太低或者出現容量滿,寫磁盤失敗會致使很嚴重的系統問題。
使用dd命令能夠引發大量磁盤讀寫操做,配合time命令能夠測試收集存儲帶寬,此存儲帶寬測試工做須要選擇系統空閒時段進行。得到存儲帶寬後,能夠比較硬件配置帶寬,來判斷存儲帶寬是否知足業務負載需求。
AIX系統提供了一些文件系統I/O相關的內核參數,經過ioo命令進行調整。
使用netstat命令監控網絡通信情況,若是errs列持續不爲0,表示網絡設備存在故障,需定位具體緣由來解決。
命令topas中反映了網絡通信數據的實時吞吐量,能夠觀察網絡輸入數據量和輸出數據量是否與業務量相符。對於業務包不少但數據量小的狀況,能夠增長網絡數據包的大小。比較每秒通信的千字節數和網絡配置帶寬,如網絡配置帶寬構成系統瓶頸,需升級網卡等硬件設備。
1) 檢查Linux操做系統CPU負載:
a) 執行top命令;
b) 執行sar 2 30命令;
c) 執行vmstat 2 30命令;
d) 執行mpstat 2 30命令。
2) 定位佔用CPU資源最多的進程:
a) 執行top命令;
b) 在top命令執行窗口,使用熱鍵「P」,按照CPU使用率對進程進行排序。
3) 判斷是否有殭屍進程:
a) 執行top命令;
b) 執行ps -ef|grep defunct命令。
1) 檢查Linux操做系統內存使用率:
a) 執行命令:top---在程序界面中,查看MEM、Swap、Buffer、Cache數值;
b) 執行命令:free---查看+/-buffers/cache後的內存使用率;
c) 執行命令:cat /proc/meminfo---查看內存詳細使用狀況。
2) 查詢佔用內存資源最多的進程:
a) 執行top;
b) 在top界面中按熱鍵「M」,按照內存使用率對進程進行排序。
3) 查看內核slab內存佔用:
a) 查看當前kernel slab cache信息
#slabtop
b) #cat /proc/slabinfo
4) 清理系統內存中的cache和buffer:
a) 刷新緩存
#sync
b) 清理cache
能夠有選擇地進行清理:
清理pagecache:echo 1 > /proc/sys/vm/drop_caches
清理dentries和inodes緩存:echo 2 > /proc/sys/vm/drop_caches
清理pagecache、dentries和inodes緩存:echo 3 > /proc/sys/vm/drop_caches
c) 查看當前kernel slab cache信息
#slabtop
#cat /proc/slabinfo
5) 交換區使用狀況檢查
a) 查看內存及交換空間使用狀況
$free
b) 查看交換空間設備使用狀況
$cat /proc/swaps
c) 查看交換區訪問狀況
$vmstat 2 10
此命令輸出週期爲2秒,共計10次。需注意其中的‘swap’列的si、so值。
d) 查看佔用交換區最多的進程
$top
在top界面中,按’f’鍵、’p’鍵並回車,在top界面中,會新增一列「swap」,可據此定位佔用swap較多的進程。
1) 檢查Linux操做系統磁盤I/O負載
執行:vmstat、iostat、sar -d命令。
vmstat反映了進程的虛擬內存,虛擬內存,磁盤,trap和cpu的活動狀況,在多cpu系統中,vmstat在輸出結果中平均了cpu數量
iostat:若是想看每一個設備的io狀況,可以使用iostat命令
2) 查詢消耗I/O資源最多的進程
運行iotop工具進行系統I/O性能監控
3) 文件系統信息
a) 執行如下命令查看文件系統掛載狀況:
#df 查看文件系統使用率
#mount 查看文件系統mount屬性
#cat /etc/fstab 確認是否有未掛載文件系統
b) 查看日誌中是否有關於文件系統的報錯信息
#tail -2000 /var/log/messages
1) 主機通信是否延遲
執行命令:
#ping 網關_IP
#ping 關聯主機_IP
2) 主機通信是否丟包
執行命令:
#/sbin/ifconfig
3) 到相連業務系統的通信是否正常
執行命令:
#ping 關聯繫統_IP;
#telnet 關聯繫統_IP PORT_NUMBER
#route
#traceroute 關聯繫統_IP
#ifconfig
4) 網卡驅動是否正常加載
執行命令:
#tail -2000 /var/log/messages 查看日誌信息
#ifconfig 查看網卡工做狀態
#lspci |grep -i eth 查看物理網卡
#ethtool -i 網卡_名稱 查看指定網卡所使用的驅動程序
#cat /etc/modprobe.conf 查看網卡所使用的驅動程序名稱
#cat /proc/modules 查看已加載驅動
#lsmod 查看當前網卡驅動是否已經正確加載
#modinfo 驅動_名稱 查看驅動信息
5) 網卡配置參數
執行命令:
#ethtool 網卡_名稱
6) 網卡配置信息檢測
執行如下命令:
#ping 網管_IP
#ping 關聯主機_IP
#ifconfig 查看網卡信息
#tail -2000 /var/log/messages 查看日誌信息
#cat /etc/sysconfig/network 查看主機名及缺省路由配置
#cat /etc/sysconfig/network- scripts/ifcfg-eth?, 查看IP,掩碼,網關等設置信息;
修改配置文件後,執行 #service network restart ,重啓網絡服務。
7) 網絡鏈接數統計
執行如下命令查看當前網絡鏈接數量:
a) listen狀態的鏈接數:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep LISTEN |awk '{print $1}'
b) established狀態的鏈接數:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep ESTABLISHED |awk '{print $1}'
c) close_wait狀態的鏈接數:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep CLOSE_WAIT |awk '{print $1}'
d) fin_wait_2狀態的鏈接數:
$netstat -an|grep "^tcp" |awk '{print $6}'|sort -ir|uniq -c |grep FIN_WAIT_2 |awk '{print $1}'
8) 網絡BUFFER請求積壓
a) 查看當前網絡TCP請求信息
#netstat -ntlp
在輸出結果中,「Recv-Q」和「Send-Q」兩列,分別表示相應網絡監聽端口的BUFFER信息。
b) 查看TCP接收隊列容量
#cat /proc/sys/net/ipv4/tcp_rmem 取輸出結果的第三個數
# cat /proc/sys/net/core/rmem_max
說明:若是tcp_rmem比rmem_max 大,則取rmem_max的值 ,不然取tcp_rmem的值
c) 查看TCP發送隊列容量
# cat /proc/sys/net/ipv4/tcp_wmem 取輸出結果的第三個數值
# cat /proc/sys/net/core/wmem_max
說明:若是tcp_wmem比wmem_max 大,則取wmem_max的值 ,不然取tcp_wmem的值
d) 調整TCP接收隊列容量示例
臨時方法:
#sysctl -w "net.ipv4.tcp_rmem=4096 32768 262142"
# sysctl -w " net.core.rmem_max=262142"
永久調整:
#echo "net.ipv4.tcp_rmem=4096 32768 262142" >> /etc/sysctl.conf
#echo " net.core.rmem_max=262142" >> /etc/sysctl.conf
e) 調整TCP發送隊列容量示例
臨時方法:
#sysctl -w "net.ipv4.tcp_wmem=1024 32768 262142"
# sysctl -w " net.core.wmem_max=262142"
f) 永久調整:
#echo "net.ipv4.tcp_wmem=4096 32768 262142" >> /etc/sysctl.conf
#echo " net.core.wmem_max=262142" >> /etc/sysctl.conf
9) 抓包
若是遇到網絡通訊問題,能夠經過收集網絡抓包數據幫助分析問題,在LINUX上網絡抓包使用tcpdump工具。tcpdump是一個很是靈活的工具,能夠經過多個參數的組合,實現對網絡上的數據包進行截獲。 tcpdump能夠將網絡中傳送的數據包的「頭」徹底截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
例如:tcpdump -i eth1 tcp port 80 抓取指定網路接口的數據包
經常使用參數:-c n 指定抓取數據包的數量;-i ethn 指定網路接口;-e 抓取數據包中打印鏈路層包頭;-r 讀取文件中數據包信息; -f file 指定輸入的文件; -w file 將抓取數據輸出到指定文件;ip/tcp/udp/net指定抓取特定協議的數據包;host hostname/ip 抓取指定host發出或接受的數據包。