linux服务器宕机分析/性能瓶颈分析
linux服務器宕機分析/性能瓶頸分析
服務器宕機原因很多,資源不足、應用、硬件、系統內核bug等,以下一個小例子
服務器宕機了,首先得知道服務器宕機的時間點,然后分析日志查找原因
1.last reboot 此命令可以查看主機起來的時間,不是宕機的時間
?
?
reboot system boot 2.4.21-27.ELsmp Mon?Sep 16 02:28?(07:02) //這個是主機起來的時間
?
2.sar -u -f /var/log/sa/sa16 |more 查看歷史cpu情況
?
?
01:10:00 AM all 12.18 0.00 3.90 36.97 46.95
01:20:00 AM all 25.21 0.00 2.39 24.43 47.96
01:30:00 AM all 3.72 0.00 4.03 44.92 47.32
01:40:00 AM all 1.65 0.00 2.45 47.59 48.31
01:50:00 AM all 31.85 0.00 2.86 18.03 47.26
02:00:00?AM all 48.40 0.00 2.01 2.46 47.13 //這里才是主機宕機的時間,要看宕機原因看著個時間點的日志
Average: all 10.77 0.00 2.00 14.76 72.47
?
02:28:07 AM LINUX RESTART
?
02:30:00 AM CPU %user %nice %system %iowait %idle
02:40:00 AM all 0.44 0.00 1.11 0.90 97.55
02:50:00 AM all 0.94 0.00 1.03 0.36 97.67
?
Sep 16 02:00:02 ilearndb snmpd[1138]: [smux_accept] accepted fd 11 from 10.0.1.145:46748
Sep 16 02:01:53 ilearndb modprobe: modprobe: Can't locate module eth2
Sep 16 02:01:53 ilearndb last message repeated 3 times
Sep 16 02:05:04?ilearndb snmpd[1138]: [smux_accept] accepted fd 11 from 10.0.1.145:46824 //系統里面看到2:05分還有日志,說明2:00的時候主機hang住了,sar已經取不了數據
?
在看sar的數據,發現(用到了swap,并且使用率在上升),是內存不足導致的主機hang住了。
# sar -r -f sa16|more
12:00:00 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
12:10:00 AM 27784 2027668 98.65 14012 1668488 7436568 411176 5.24 70372
12:20:00 AM 22880 2032572 98.89 15292 1673892 7436576 411168 5.24 70536
12:30:01 AM 22068 2033384 98.93 16280 1672976 7436576 411168 5.24 70536
12:40:00 AM 22848 2032604 98.89 17760 1671660 7436576 411168 5.24 70540
12:50:00 AM 23048 2032404 98.88 18744 1670228 7436576 411168 5.24 70580
01:00:00 AM 27328 2028124 98.67 19616 1664684 7436648 411096 5.24 70572
01:10:00 AM 18760 2036692 99.09 8424 1714120 7418172 429572 5.47 28584
01:20:00 AM 18584 2036868 99.10 14596 1731984 7413060 434684 5.54 17520
01:30:00 AM 22208 2033244 98.92 2436 1739972 7421352 426392 5.43 17520
01:40:00 AM 18448 2037004 99.10 3940 1742296 7421444 426300 5.43 17600
01:50:00 AM 17880 2037572 99.13 6480 1727696 7410060 437684?5.58?18028
02:00:00 AM 18124 2037328 99.12 10916 1718740 7408268 439476?5.60?17644
Average: 21663 2033789 98.95 12375 1699728 7425990 421754?5.37?45003
?
02:28:07 AM LINUX RESTART
?
02:30:00 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
02:40:00 AM 1517792 537660 26.16 27452 393360 7847744 0 0.00 0
02:50:00 AM 1337060 718392 34.95 29020 562108 7847744 0 0.00 0
03:00:00 AM 1330228 725224 35.28 30468 563964 7847744 0 0.00 0
03:10:00 AM 1218940 836512 40.70 31964 668272 7847744 0 0.00 0
03:20:00 AM 1218008 837444 40.74 33016 670572 7847744 0 0.00 0
03:30:00 AM 1208612 846840 41.20 34072 673436 7847744 0 0.00 0
03:40:00 AM 1200904 854548 41.57 34212 678896 7847744 0 0.00 0
03:50:00 AM 1201228 854224 41.56 35204 679216 7847744 0 0.00 0
?
?
可以考慮給主機增加1G內存。
附:性能瓶頸分析
CPU資源的過度使用,會造成系統中出現大量的等待進程,導致應用程序響應緩慢,而進程的大量增加又會導致系統內存資源的增加,當物理內存耗盡時,系統會使用虛擬內存,而虛擬內存的使用又會造成磁盤IO的增加并加大CPU的開銷。
1、查看cpu是否是瓶頸
可以使用很多工具:topas、vmstat、sar、top(命令的使用網上有很多資料介紹)
目前大部分CPU在同一時間只能運行一個線程,超線程的處理器可以在同一時間處理多個線程,因此可以利用超線程特性提高系統性能。
在linux系統下只有運行SMP內核才能支持超線程,但是安裝的CPu數量越多,從超線程獲得的性能提升越少。
另外linux內核會將多核的處理器當做多個單獨的CPU來識別,例如,兩個4核的CPU會被當成8個單個CPU,從性能角度講,兩個4核的CPU整體性能要比8個單核CPU低25%-30%。
可能出現CPU瓶頸的應用有郵件服務器、動態web服務器等。
CPU物理個數 》cat /proc/cpuinfo |grep "physicalid" |sort |uniq |wc -l
查看cpu幾核 》cat /proc/cpuinfo |grep"cores"|uniq
邏輯cpu個數 》cat /proc/cpuinfo|grep processor|wc –l
?
CPU型號查看 》dmidecode |grep -B5 -A5 -i cpu
?
vmstat?虛擬內存統計
例: vmstat 2 3
輸出項的解釋如下:
procs
?
memory
* swap列表示切換到交換區的內存大小(KB為單位),如果swap的值不為0或者比較大,只要si和so長期為0,一般不是性能問題 * free列表示當前空閑的物理內存數量(以KB為單位) * buff列表示buffers cache的內存數量,一般對塊設備的讀寫才需要緩沖 * cache列表示page cached的內存數量,一般作為文件系統進行緩存,頻繁訪問的文件都會被緩存。如果cache值較大,說明緩存文件較多,如果此時io中的bi比較小,說明文件系統效率比較好。?
swap
* si列表示由磁盤調入內存,也就是由內存進入內存交換區的內存大小,單位KB/秒 * so列表示由內存調入磁盤,也就是由內存交換區進入內存的大小,單位KB/秒。 在一般情況下,si、so的值都為0,如果si、so值長期不為0,則表示系統內存不足,需要增加系統內存。?
io
io項顯示磁盤讀寫情況 bi列表示從塊設備讀入數據的總量(即讀磁盤)(kb/s) bo列表示寫到塊設備的數據總量(即寫磁盤)(kb/s) bi+bo的參考值為1000,如果超過1000,而且wa值較大,則表示系統磁盤IO有問題,應該考慮提高磁盤的讀寫性能。?
system
顯示采集間隔內發生的中斷數 in列表示在某一時間間隔內觀測到的每秒設備中斷數 cs列表示每秒產生的上下文切換次數 上面的兩個值越大,由內核消耗的CPU時間越多。?
CPU
顯示了CPU的使用狀態,此列是關注的重點。 us列顯示了用戶進程消耗的CPU時間百分比。us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期大約50%,就需要考慮優化算法或程序。 sy列顯示了內核進程消耗的CPU時間百分比。sy的值較高時,說明內核消耗的CPU資源很多。 根據經驗,us+sy的參考值為80%,如果us+sy大約80%,說明可能存在CPU資源不足。 id列顯示了CPU處在空閑時間的時間百分比。 wa列顯示了IO等待所占用的CPU時間百分比。wa值越高,說明IO等待越嚴重。根據經驗,wa的參考值為20%,如果wa超過20%,說明IO等待嚴重,引起IO等待的原因可能是磁盤大量隨機讀寫造成的,也可能是磁盤或者磁盤控制器的帶寬瓶頸(主要是塊操作)造成的。 綜上所述,在對CPU的評估中,需要重點注意procs項中r列的值和CPU項中us、sy和id列的值。?
?
好: user%+sys%<70%
壞: user%+sys%=85%
糟糕: user%+sys%>=90%
?
2、查看內存是否瓶頸
內存不足時,可以使用工具觀察到頻繁使用虛擬內存,虛擬內存可以緩解物理內存的不足,但是虛擬內存的過多占用會導致應用程序的性能明顯下降。
服務器內存查看 》dmidecode |grep -B5 -A5 -i memory |grep Size
free命令
free是監控linux內存使用的指令。 [plain]view plaincopyfree -m
total used free shared buffers cached
Mem: 48291 33630 14660 0 24 22437
-/+ buffers/cache: 11168 37122
Swap: 0 0 0
vmstat命令可以查看
好:SwapIn(si) = 0 SwapOut(so) = 0
壞:Per CPU with 10page/s
糟糕:more swap In & swap out
3. 磁盤IO性能
命令 iostat 可得到相應的數值
好:iowait%<20%
壞:iowait% = 35%
糟糕:iowait%>=50%
4.網絡帶寬
?
查詢QLogic HBA卡 》lspci | grep -i Fibre
?
?
?
?
?
user%表示CPU處在用戶模式下的時間百分比
sys%表示CPU處在系統模式下的時間百分比
iowait%表示CPU等待輸入輸出完成時間的百分比
swap in表示虛擬內存的頁導入,從SWAP DISK交換到RAM
swap out表示虛擬內存的頁導出,從RAM交換到SWAP DISK
?
個人總結:
?
| 總結論: | ? | ||||
| ? | |||||
| ? | |||||
| ? | |||||
| 序號 | 檢查點 | 檢查方法 | 判斷依據 | 結果判斷 | ? |
| 1 | 系統的Uptime時間 | uptime | 如果發現系統uptime時間很短,則需要檢查系統是否重啟過 | ? | ? |
| 2 | 檢查文件系統的使用率 | df -h | 對于OS的文件系統,如果發現使用率高于90%就應該再進一步檢查是什么原因引起的文件系統使用率上漲。對于應用系統使用的文件系統,我們重點在于發現有沒有文件系統使用率到達95%以上,若有,把情況報告給相關的人員。 | ? | ? |
| 3 | 檢查網絡狀態 | ping | 網絡連通性檢查 | ? | ? |
| ifconfig | 檢查當前處于up狀態的網卡 | ? | ? | ||
| mii-tool | link ok?顯示各個網卡所接鏈路的狀況 | ? | ? | ||
| ethtool eth[n] | 查看指定網卡所接鏈路的狀況 | ? | ? | ||
| ls -al /etc/resolv.conf | 確保以上文件的權限是other可讀 | ? | ? | ||
| cat /etc/hosts | 主機名在hosts文件中只應該與機器的物理IP映射,如果出現有機器的浮動IP與主機映射就需要做進一步檢查 | ? | ? | ||
| netstat?–rn | 正常情況下應該只設置了網關,而沒有其它的靜態路由,如果在列表中發現有其它的路由,則需要確認是否正確 | ? | ? | ||
| view /etc/sysconfig/network-scripts/ifcfg-eth* | 先檢查子網掩碼設置是否正確 | ? | ? | ||
| 4 | 檢查ntp時間服務器設置 | ntpq -p | 正常情況下應該有如下輸出信息: | ? | ? |
| 5 | 進程狀態 | ps?–ef | grep defunct;ps -ef | wc -l;ps -ef | grep -v root | wc -l | 如果系統中存在大量的僵尸進程則屬于異常的狀態需要檢查處理。如果只是個別進程就不需要處理。 | ? | ? |
| 6 | 內存狀態 | free -m | 檢查內存使用情況 | ? | ? |
| 7 | swap狀態 | swapon -s | 查看swap使用百分比 | ? | ? |
| 8 | 檢查機器性能 | vmstat | CPU:如果cpu的id字段長時間<10,該機器的CPU負載比較高 | ? | ? |
| 9 | 檢查磁盤性能 | iostat | 檢查iowait 時長是否過大? | ? | ? |
| 10 | 檢查系統日志 | view /var/log/messages | 可以通過檢索error,fail,warn等字眼加快檢查的速度 | ? | ? |
| 11 | 收集系統日志 | sosreport -a --batch | 收集系統日志 | ? | ? |
| 12 | 收集硬件日志 | DSET | Dell PC Server?:用DSET 工具收集硬件日志 | ? | ? |
?
版權聲明:原創作品,謝絕轉載。否則將追究法律責任 linux服務器宕機0
轉載于:https://www.cnblogs.com/gaoyuechen/p/8595117.html
總結
以上是生活随笔為你收集整理的linux服务器宕机分析/性能瓶颈分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux驱动之混杂设备(misc)
- 下一篇: mysql内存不断被占用,导致每隔一个多