服務器IO異常-Ubuntu14.04【日常工作記錄】

客戶反映雲主機IO異常,導致雲主機運行速度非常緩慢。
問題主機共3臺,在同一服務器,且服務器內沒有其他雲主機。
嘗試關閉其中一臺雲主機,IO異常問題仍然存在;
嘗試關閉其中兩臺雲主機,IO異常問題仍然存在;
關閉全部雲主機,IO異常問題仍然存在;

top命令查看CPU以及內存使用情況,發現無異常;
使用iostat命令監控IO實時數據:
iostat -x 1 #每一秒刷新一次
服務器IO異常-Ubuntu14.04【日常工作記錄】
(圖片是服務器正常情況下截取的,只做參考)
主要參考三個字段:
await:每一個IO請求的處理的平均時間(單位是微秒毫秒)。這裏可以理解爲IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了。
svctm:表示平均每次設備I/O操作的服務時間(以毫秒爲單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高於svctm的值,則表示I/O隊列等待太長,系統上運行的應用程序將變慢。
%util:在統計時間內所有處理IO時間,除以總共統計時間。
IO異常時,await的值基本保持在三位數,與svctm相差很大,同時%util保持在98%-100%。

聯繫機房重啓服務器,IO異常問題消失,開始進行排查;
首先使用iostat命令確認當前IO是否真的正常
iostat -x 1 #觀察一會

查看日誌
less /var/log/syslog
發現error字段日誌信息:
snmpd[2211]: error on subcontainer 'ia_addr' insert (-1)

經過對錯誤信息的查詢,得到如下結論:
此錯誤實際上導致內存泄漏,因爲容器在“插入”失敗時未清除

修復方式:
因爲/etc/defaults/snmpd中的默認設置,snmpd會將所有錯誤報告給syslog。
如果要僅僅記錄信息級別,而不調試,按如下修改:
SNMPDOPTS='-LS6d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'
TRAPDOPTS='-LS6d -p /var/run/snmptrapd.pid'
(將-Lsd,修改爲-LS6d)

修改後重啓snmp服務
service snmpd restart

使用iostat查看當前IO情況,確認正常後,依次將三臺雲主機啓動,並觀察IO情況。
使用SCRT打開兩個窗口,全部遠程連接該服務器:
1窗口:iostat -x 1 #監控IO狀態
2窗口:tail -f /var/log/syslog #實時觀察日誌變化
(目的是觀察,在修改了snmp的配置後,服務器有沒有某些動作會影響IO)

依次打開雲主機時發現雲主機在剛開啓時IO會變高,圖下圖
服務器IO異常-Ubuntu14.04【日常工作記錄】

但await和svctm的差值卻較小,因此可判斷IO壓力不大。
可詢問客戶雲主機間有沒有同步或恢復機制。 #經與客戶溝通,得知三臺雲主機間在進行數據庫恢復,並且結合await和svctm的值可判斷,當前IO無異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章