您好,登錄后才能下訂單哦!
本文主要結合筆者在蘇寧云平臺支撐工作中的實踐,以基于經驗切實有效的判定分析方式貫穿, 整理了云平臺linux服務器(下文中區分了物理機及虛擬機)運維中的常見問題場景、分析工具箱及判別思路.主要包含以下三部分:
1、linux服務器CPU、IO、內存性能異常的常用工具、判定標準、以及分析思路
2、linux服務器異常宕機的故障可能的原因、定位方法與常規分析思路
3、linux服務器丟包的問題可能的原因、定位方法與常規分析思路
讀者范圍:中高級linux服務器運維人員
注:本文結合問題圖景枚舉了各個tool與分析關聯較大的參數及用法,以起到一個示例說明,各工具的詳細用法需要自行閱讀研習man手冊.
圖1? cpu 異常分解
top?-H?-d?1?-c
高亮列及運行進程?z?x?y
選擇?shift+L/Rarrow
-d 磁盤讀寫報告io 統計
-r 內存使用及缺頁
-u cpu
-l 展示命令行及參數
-w switch
-t 顯示線程的統計
-T
每秒展示活動進程的cpu?使用率
pidstat?-u?1
按線程組關系聚合展示cpu?消耗時間,幫助找出busy?線程
pidstat??-t?1?-T?ALL
-b 塊統計
-B 頁面
-r 頁面使用統計
-R 頁面回收統計
-d 磁盤使用統計
-q 調度統計
-S swap
-m 運行頻率
-v 文件 inode dentry活動統計
-w 調度switch
-W 換入換出統計
-n 網絡 DEV, EDEV, NFS, ? ? ?NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, ? ? ?EICMP6 and UDP6
-s 00:00:00 -e 00:21:00 指明要查看的開始結束時間
nmonvisulizar 是來自于ibm 的nmon可視化分析工具
開啟開關
echo?1?>?/proc/sys/kernel/sysrq
打印進程堆棧
echo?t?>?/proc/sysrq-trigger
eg.如果已經softlockup?且業務影響已然明顯,停業務后用下面命令產生一個vmcore
echo?c?>?/proc/sysrq-trigger
-c 統計系統調用次數及時間
-f 也trace子進程調用
-e 指明關心的調用 eg. -e ? ? ?open,write
eg.
命令執行時掛起,了解進程掛在哪個syscall
strace?cmd?arg
進程系統調用開銷較大,獲取syscall統計
strace?-p?PID?-c
bt 查看執行堆棧
frame 切換工作幀
用戶進程的cpu消耗影響系統整體使用,配合debuginfo及代碼可大致梳理出占用邏輯,attach后,進程會STOP
gdb?-p?PID
perf top 在線采樣及展示
-e 指明事件,默認是cycle,全部時間可perf list 查詢
-G 調用圖
-F 采樣頻率
-d 刷新間隔
-p 特定進程
-C 特定核
perf?top?-d1?-G?-F?99?-z
shift?+?e?可展開堆棧視圖
shift?+?c?可折疊堆棧視圖
perf record/report
record輸出采樣文件perf.data文件
report解析
perf?record?-F?99?-a?-g?-p?PID?-C?6?sleep?5
perf?report
圖2 內存異常分解
free
cat?/proc/self/status
cat?/proc/self/smaps
numastat??-m
numactl?--hardware
cat?/proc/meminfo
cat?/proc/zoneinfo?|egrep?"zone|min|low|high|free|present"
....
Node?0,?zone???Normal
??pages?free?????3195167
????????min??????13740
????????low??????17175
????????high?????20610
????????present??3361280
????nr_free_pages?3195167
??????????????high:??186
??????????????high:??186
sysctl -a|grep extra_free_kbytes min_free_kbytes extra_free_kbytes的組合值構成三個水線
直接回收線 MIN min_free_kbytes
后臺回收線 LOW 5/4*min_free_kbytes + ? ? ?extra_free_kbytes
后臺回收停止 HIGH 3/2*min_free_kbytes + ? ? ?extra_free_kbytes
cat?/proc/buddyinfo
Node?0,?zone??????DMA??????2??????2??????1??????1??????1??????0??????1??????0??????1??????1??????3
Node?0,?zone????DMA32????730????596????414????339????277????214????159????127?????85?????68????557
Node?0,?zone???Normal????447????558????348????166?????72?????45???1021????888????607????252???2661
slabtop?了解當前內核數據結構內存消耗
io異常
????
圖3 io 異常分解
cfq deadline noop
當意外的io 延遲發生,需要深入了解io延遲分布,需要使用blktrace & blkparser 工具進行細致分析
學會合理使用oflag標志 sync 同步刷出數據 direct 繞過pagecache
用來標定系統io能力的便捷工具
fio?-filename=/dev/mapper/vg_os-testlv??-direct=1?-iodepth?1?-thread?-rw=randwrite?-ioengine=psync?-bs=8k?-size=100G?-numjobs=96?-runtime=60?-group_reporting?-name=mytest
面向塊占用及文件系統占用的查詢分析
strace 可以看出兩個命令原理的差異:df 讀取文件系統信息,du stat 各個文件然后累加
兩者出入較大需進一步考察:
是否存在空洞?
是否一個文件用戶已經看不到但是文件系統還沒有真正刪除?(就是打開文件被刪除的情況??lsof?+L1)
是否被某些掛載點隱藏了之前的目錄文件?
df?顯示錯誤的話懷疑是否fs損壞?
?
圖4 網絡異常分析
ethtool?-S
關注drop??error
tc?-s?-d?qd
關注包drop情況
常用連接查看
netstat?-ntp
netstat?-ntpl
ss?-ie
-i 待抓取的網口名字
-w 抓包文件,可以是時間格式化串
-G 回滾時長,單位秒
-c 抓取多少個包后退出
-s 抓取部分報文,單位字節
-r 讀取抓包文件離線分析
-z 調用gzip等工具做壓縮
-Z 切換user 運行,默認是tcpdump
-B 設置buf大小,不然抓不全單位KB 10240
eg.tcpdump?tcp?port?80?and?host
tcpdump??-s0?-w?%m_%d_%H_%M_%S.pcap?-G?5?-z?gzip?-Z?root?-c?100000?-i?any
圖5 宕機場景分析
log 查看宕機關聯日志
bt 查看宕機位置
sys 查看基本信息
crash??vmcore??vmlinux
vmlinux?來自于kernel?debuginfo包,是帶調試信息的二進制內核鏡像
如果系統未正確生成vmcore,?需檢查?/etc/kdump.conf?配置及其中的設定vmcore?路徑此處討論已開始涉及內核態問題,常見異常分析領域不再展開
?
本文場景化地總結了云平臺幾類常見的linux server異常分析思路及toolset, 篇幅所限無法面面俱到,但如開篇提到,真正的快速有效的問題判別定位離不開對系統領域的熟悉與細致縝密的判斷,以場景化方式靈活地運用好工具箱,達到由表及里,由淺入深的理解系統,快速高效解決線上問題。?Havefun:)
?
謝英豪 ?蘇寧科技集團云平臺中心高級工程師,長期耕耘于linux內核及操作系統的支撐領域,保障蘇寧云環境線上海量?kvm?server farm 的穩定高效運行.
?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。