運維處理問題思路_it運維問題思路 - CSDN

2020-11-23 CSDN技術社區

作為一名合格的 Linux 運維工程師,一定要有一套清晰、明確的解決故障思路,當問題出現時,才能迅速定位、解決問題,這裡給出一個處理問題的一般思路:

 

  • 重視報錯提示信息:每個錯誤的出現,都是給出錯誤提示信息,一般情況下這個提示基本定位了問題的所在,因此一定要重視這個報錯信息,如果對這些錯誤信息視而不見,問題永遠得不到解決。

  • 查閱日誌文件:有時候報錯信息只是給出了問題的表面現象,要想更深入的了解問題,必須查看相應的日誌文件,而日誌文件又分為系統日誌文件(/var/log)和應用的日誌文件,結合這兩個日誌文件,一般就能定位問題所在。

  • 分析、定位問題:這個過程是比較複雜的,根據報錯信息,結合日誌文件,同時還要考慮其它相關情況,最終找到引起問題的原因。

  • 解決問題:找到了問題出現的原因,解決問題就是很簡單的事情了。

 

從這個流程可以看出,解決問題的過程就是分析、查找問題的過程,一旦確定問題產生的原因,故障也就隨之解決了。

 

結合上面介紹的 Linux 運維問題的解決思路後,下面我們挑選了6個比較典型的 Linux 運維問題,來看看是如何分析和解決的:

 

 

問題 1:文件系統破壞導致系統無法啟動

Checking root filesystem

/dev/sda6 contains a file system with errors, check forced

An error occurred during the file system check

 

這個錯誤可以看出,作業系統 / dev/sda6 分區文件系統出現了問題,這個問題發生的機率很高,通常引起這個問題的原因主要是系統突然斷電,引起文件系統結構不一致,一般情況下,解決此問題的方法是採用 fsck 命令,進行強制修復。

 

# umount /dev/sda6

# fsck.ext3 -y /dev/sda6

 

問題 2:「Argument list too long」 錯誤與解決方法

 

# crontab -e

編輯完後保存退出後,報錯 no space left on device

根據上面的報錯了解到是磁碟空間滿了,那麼首先是檢查磁碟空間,

 

# df -h

查看到是 / var 磁碟分區空間已經達到 100%,至此定位了問題所在。是 / var 磁碟空間飽滿導致,因為 crontab 會在保存時將文件信息寫到 / var 目錄下面,然而這個磁碟沒有空間了,所以報錯。

接著通過命令 du –sh * 命令檢查 / var 目錄下面的所有文件或者目錄的大小,發現 / var/spool/clientmqueue 目錄佔用了 / var 整個分區大小的 90%,那麼 / var/spool/clientmqueue 目錄下的文件都是怎麼產生的,能否刪除,基本上都是郵件信息,可以刪除

 

# rm *

/bin/rm :argument list too long

當在 linux 系統中試圖傳遞太多參數給一個命令時,就會出現 「argument list too long」 錯誤,這是 linux 系統一直以來都有的限制,查看這個限制可以通過命令 「getconf ARG_MAX」 來實現,

 

# getconf ARG_MAX

# more /etc/issue 查看版本

 

解決方法:1、

# rm [a-n]* -rf

# rm [o-z]* -rf

2、使用 find 命令來刪除

# find /var/spool/clientmqueue –type f –print –exec rm –f {} \;

3、通過 shell 腳本

#/bin/bash

RM_DIR=』/var/spool/clientmqueue』

cd $RM_DIR

for I in `ls`

do

rm –f $i

done

4、重新編譯內核

需要手動增加內核中分配給命令行參數的頁數,打開 kernel source 下面的 include/linux/binfmts.h 文件,找到如下行:

#denfine MAX_ARG_PAGES 32

將 32 改為更大的值,例如 64 或者 128,然後重新編譯內核

 

問題 3:inode 耗盡導致應用故障

 

客戶的一臺 Oracle 資料庫如武器在關機重啟後,Oracle 監聽無法啟動,提示報錯 Linux error : No space left on device

從輸出信息看出來是因為磁碟耗盡導致監聽無法啟動,因為 Oracle 在啟動監聽時需要創建監聽日誌文件,於是首先查看磁碟空間使用情況

 

# df -h

從磁碟輸出信息可知,所有的分區磁碟空間都還有剩餘不少,而 Oracle 監聽寫日誌的路徑在 / var 分區下,/var 下分區空間足夠。

 

解決思路:

既然錯誤提示語磁碟空間有關,那就深入研究關於磁碟空間的問題,在 linux 系統中對磁碟空間的佔用分為三個部分:第一個是物理磁碟空間,第二個是 inode 節點所佔用的磁碟空間,第三個是 linux 用來存放信號量的空間,而平時接觸較多的是物理磁碟空間。既然不是物理磁碟空間的問題,接著就檢查是否是 inode 節點耗盡的問題,通過執行命令 「df -i」 查看可用的 inode 節點。由輸出結果看出確實是因為 inode 耗盡導致無法寫入文件。

 

可以通過下面的命令查看某個磁碟分區 inode 的總數

# dumpe2fs -h /dev/sda3 |grep 『Inode count』

每個 inode 都有一個號碼,作業系統用 inode 號碼來區分不同的文件,通過『ls -i』命令可以查看文件名對應的 inode 號

 

如果要查看這個文件更詳細的 inode 信息,可以通過 stat 命令來實現

# stat install.log

解決問題

# find /var/spool/clientmqueue/ -name 「*」 -exec rm -rf {} \;

 

問題 4:文件已經刪除,但是空間沒有釋放的原因

 

運維監控系統發來通知,報告一臺伺服器空間滿了,登陸伺服器查看,根分區確實滿了,這裡先說一下伺服器的一些刪除策略,由於 linux 沒有回收站功能,所以線上伺服器上所有要刪除的文件都會先移到系統 / tmp 目錄下,然後定期清除 / tmp 目錄下的數據。這個策略本身沒有什麼問題,但是通過檢查發現這臺伺服器的系統分區中並沒有單獨劃分 / tmp 分區,這樣 / tmp 下的數據其實佔用根分區的空間,既然找到了問題,那麼刪除 / tmp 目錄下一些佔用空間較大的數據文件即可。

 

# du -sh /tmp/* | sort -nr |head -3

通過命令發現在 / tmp 目錄下有個 66G 大小的文件 access_log,這個文件應該是 apache 產生的訪問日誌文件,從日誌大小來看,應該是很久沒有清理的 apache 日誌文件了,基本判定是這個文件導致的根空間爆滿,在確認此文件可以刪除後,執行如下刪除命令,

# rm /tmp/access_Iog

# df -h

 

從輸出來看,根分區空間仍然沒有釋放,這是怎麼回事

一般來說不會出現刪除文件後空間不釋放的情況,但是也存在例外,比如文件進程鎖定,或者有進程一直在向這個文件寫數據,要理解這個問題,就需要知道 linux 下文件的存儲機制和存儲結構。

 

一個文件在文件系統中存放分為兩個部分:數據部分和指針部分,指針位於文件系統的 meta-data 中,在將數據刪除後,這個指針就從 meta-data 中清除了,而數據部分存儲在磁碟中。在將數據對應的指針從 meta-data 中清除後,文件數據部分佔用的空間就可以被覆蓋並寫入新的內容,之所以出現刪除 access_log 文件後,空間還沒有釋放,就是因為 httpd 進程還在一直向這個文件寫入內容,導致雖然刪除了 access_Ilog 文件,但是由於進程鎖定,文件對應的指針部分並未從 meta-data 中清除,而由於指針並未刪除,系統內核就認為文件並未被刪除,因此通過 df 命令查詢空間並未釋放。

 

問題排查:

既然有了解決思路,那麼接下來看看是否有進程一直在向 access_log 文件中寫入數據,這裡需要用到 linux 下的 losf 命令,通過這個命令可以獲取一個仍然被應用程式佔用的已刪除文件列表

 

# lsof | grep delete

從輸出可以看出,/tmp/access_log 文件被進程 httpd 鎖定,而 httpd 進程還一直向這個文件寫入日誌數據,最後一列的『deleted』狀態說明這個日誌文件已經被刪除,但是由於進程還在一直向此文件寫入數據,因此空間並未釋放。

 

解決問題:

到這裡問題就基本排查清楚了,解決這一類問題的方法有很多,最簡單的方法就是關閉或者重啟 httpd 進程,當然重啟作業系統也可以。不過這些並不是最好的辦法,對待這種進程不停對文件寫日誌的操作,要釋放文件佔用的磁碟空間,最好的方法是在線清空這個文件,具體可以通過如下命令完成:

# echo 「」>/tmp/access_log

 

通過這種方法,磁碟空間不但可以馬上釋放,也可以保障進城繼續向文件寫入日誌,這種方法經常用於在線清理 apache /tomcat/nginx 等 web 服務產生的日誌文件。

 

問題 5:"too many open files" 錯誤與解決方法

 

問題現象:這是一個基於 java 的 web 應用系統,在後臺添加數據時提示無法添加,於是登陸伺服器查看 tomcat 日誌,發現如下異常信息,java.io.IOException: Too many open files

 

通過這個報錯信息,基本判斷是系統可以用的文件描述符不夠了,由於 tomcat 服務室系統 www 用戶啟動的,於是以 www 用戶登陸系統,通過 ulimit –n 命令查看系統可以打開最大文件描述符的數量,輸出如下:

$ ulimit -n

65535

 

可以看到這臺伺服器設置的最大可以打開的文件描述符已經是 65535 了,這麼大的值應該夠用了,但是為什麼提示這樣的錯誤呢

解決思路,這個案例涉及 ulimit 命令的使用

 

在使用 ulimit 時,有以下幾種使用方法:

 

1、 在用戶環境變量中加入

如果用戶使用的是 bash,那麼可以在用戶目錄的環境變量文件. bashrc 或者. bash_profile 中加入 「ulimit –u128」 來限制用戶最多可以使用 128 個進程

2、 在應用程式的啟動腳本中加入

如果應用程式是 tomcat,那麼可以再 tomcat 的啟動腳本 startup.sh 中加入『ulimit -n 65535』來限制用戶最多可以使用 65535 個文件描述符

3、 直接在 shell 命令終端執行 ulimit 命令

這種方法的資源限制僅僅在執行命令的終端生效,在退出或者和關閉終端後,設置失效,並且這個設置不影響其他 shell 終端

 

解決問題:

 

在了解 ulimit 知識後,接著上面的案例,既然 ulimit 設置沒有問題,那麼一定是設置沒有生效導致的,接下來檢查下啟動 tomcat 的 www 用戶環境變量是否添加 ulimit 限制,檢查後發現,www 用戶並無 ulimit 限制。於是繼續檢查 tomcat 啟動腳本 startup.sh 文件是否添加了 ulimit 限制,檢查後發現也沒有添加。最後考略是否將限制加到了 limits.conf 文件中,於是檢查 limits.conf 文件,操作如下

# cat /etc/security/limits.conf | grep www

www soft nofile 65535

www hard nofile 65535

 

從輸出可知,ulimit 限制加在 limits.conf 文件中,既然限制已經添加了,配置也沒有什麼錯,為何還會報錯,經過思考,判斷只有一種可能,那就是 tomcat 的啟動時間早於 ulimit 資源限制的添加時間,於是首先查看下 tomcat 啟動時間,操作如下

# uptime

Up 283 days

# pgrep -f tomcat

4667

# ps -eo pid,lstart,etime|grep 4667

4667 Sat Jul 6 09;33:39 2013 77-05:26:02

 

從輸出可以看出,這臺伺服器已經有 283 沒有重啟了,而 tomcat 是在 2013 年 7 月 6 日 9 點啟動的,啟動了將近 77 天,接著繼續看看 limits.conf 文件的修改時間,

# stat /etc/security/limits.conf

 

通過 stat 命令清除的看到,limits.conf 文件最後的修改時間是 2013 年 7 月 12,晚於 tomcat 啟動時間,清楚問題後,解決問題的方法很簡單,重啟一下 tomcat 就可以了。

 

問題 6:Read-only file system 錯誤與解決方法

解析:出現這個問題的原因有很多種,可能是文件系統數據塊出現不一致導致的,也可能是磁碟故障造成的,主流 ext3/ext4 文件系統都有很強的自我修復機制,對於簡單的錯誤,文件系統一般都可以自行修復,當遇到致命錯誤無法修復的時候,文件系統為了保證數據一致性和安全,會暫時屏蔽文件系統的寫操作,講文件系統 變為只讀,今兒出現了上面的 「read-only file system」 現象。

 

手工修復文件系統錯誤的命令式 fsck,在修復文件系統前,最好卸載文件系統所在的磁碟分區

 

# umount /www/data

Umount : /www/data: device is busy

 

提示無法卸載,可能是這個磁碟中還有文件對應的進程在運行,檢查如下:

 

# fuser -m /dev/sdb1

/dev/sdb1: 8800

 

接著檢查一下 8800 埠對應的什麼進程,

 

# ps -ef |grep 8800

 

檢查後發現時 apache 沒有關閉,停止 apache

 

# /usr/local/apache2/bin/apachectl stop

# umount /www/data

# fsck -V -a /dev/sdb1

# mount /dev/sdb1 /www/data

 

相關焦點

  • 浙江《農村生活汙水處理設施運維常見問題診斷與處理導則(徵求意見...
    【能源人都在看,點擊右上角加'關注'】北極星水處理網訊:北極星水處理網獲悉,浙江省《農村生活汙水處理設施運維常見問題診斷與處理導則(徵求意見稿)》公布,本導則適用於浙江省內運行維護單位對農村生活汙水處理設施運維常見問題的診斷與處理。
  • 拿什麼拯救你:苦逼的IT運維工程師!
    (http://bbs.chinaunix.net/thread-4162292-1-1.html)  yestreenstars回憶起了自己剛入職時的情景,」剛入職時平臺就一堆問題等著我處理,DMZ被ARP攻擊了,所有伺服器之間都不能正常通信,平臺隔三差五就出現問題,客服大半夜就打我電話,還好大部分問題都能通過遠程處理,不然每次要跑公司就更苦逼了,那天晚上就不用睡了
  • 實驗室儀器設備運維新業態與新思維
    為此,不僅需要維護人員及時處理,更需要維護人員積極去預防故障的發生。02 運維工作面臨的問題2.1運維人員短缺。實驗室運維工作是技術性工作,主要是解決實驗室儀器的運行和維護中問題。在現有實驗室管理中,實驗室設備管理和運維的工程師主要是儀器操作工程師轉變為設備工程師,對於設備的操作熟悉,而在儀器結構、深度維護、故障處理等方面,由於缺乏儀器儀表知識,顯得力不從心。社會上沒有專業對口的培訓,滿足對運維人員的需求。
  • 雲原生背景下的運維價值思考與實踐
    切雲的服務大量採用了雲原生的應用與技術架構,作為公司第一批面臨雲原生環境的業務運維,深切感受到雲原生給運維工作帶來的機遇與挑戰,運維模式的轉型已經迫在眉睫,此篇文章最大的價值在於將我們的轉型思路、方法與實踐,提供給後面更多面臨同樣挑戰的團隊借鑑與參考。下面我將從業務場景、運維轉型之道、雲端收益等幾個方面來跟大家一起來探討。
  • 運維工程師的未來——Python
    你招來的運維需要多長的時間來適應你各種軟體?這都是網際網路公司要進行考慮的問題。現在又出現一個最火的自動化運維語言的Python,那麼究竟自動化運維和自動化運維語言Python給我們帶來了什麼呢?  針對自動化運維和Python,我們在CU論壇展開了討論,詳情可以查閱(http://bbs.chinaunix.net/forum.php?
  • 簡單運維的OTN網絡詳解
    OTN網絡運維的複雜性,具體體現在以下四個方面:設備內部關係難以透視:傳統的SDH設備,基本上可以看作是一個黑盒,設備內連纖簡單。而OTN設備內部存在大量子架,並且子架內部和外部都有光纖連接,不同連纖的信號流向都不一樣。發生故障的時候,無法判斷是內部光纖還是外部光纖的問題。
  • 2019風電深度技改及智慧運維3.0高級培訓班正式啟動
    然而,在我國風電前期井噴式發展的影響下,一些單機容量小、發電效益差、安全風險大、設備質量堪憂等「後遺症」逐漸凸顯,而第三方運維準入門檻低,技改亂象叢生,這些都成為業主的痛點所在。為解決上述問題,打破後市場服務亂象,還業主一個透明的技術思路以及系統性技改規劃模板,使業主具備自主技改辨識及運維能力,實現更高效益、安全性、可靠性、環境友好性等生產目標,北極星特舉辦2019風電深度技改及智慧運維3.0高級培訓班。
  • IT運維市場在2020年前景分析
    由此可以看出,國家對企業IT基礎設施建設的重視之深,而我們IT運維人員將是這次IT基礎設施建設的主力軍。IT運維是企業項目開發後保證業務系統正常運行的必備工作之一,如何滿足企業對在線業務系統高可靠、低延時、大容量、零故障等要求或在終端用戶無感知情況下處理運維過程中存在的各種各樣的突發性問題,是IT運維人員必會的技能,但是如此優秀的IT運維人員幾乎一將難求。
  • 智能運維項目引入的「負熵」衝擊波
    以下,以經手的一個智能運維項目為例,簡單闡述如何做到減緩「熵增」甚至觸發「負熵」衝擊波效果。項目的主要目標是解決某中型銀行客戶(以下簡稱「A行」:一家位於中國南部的股份制銀行)日常運維中存在的告警風暴問題。A行主要運維痛點是告警風暴頻發,系統日增告警量達5000多條。
  • 疫情之下,智慧城市安防運維如何突破?
    疫情下進出小區需要紙質通行證在信息收集階段,受限於當下基礎設施的智能化水平,相關部門和工作人員無法獲悉患者的行動路徑和接觸人群,只能進行口頭詢問;數據處理方面,難以及時接入患者同程查詢、物資需求、求助等外部數據,這反映了智慧城市的數據孤島問題。
  • 向日葵掌控全新首發,遠程運維助力企業運維管理提質增效!
    隨著5G、雲計算、大數據等技術的發展,我們對IT運維有了新的期待和更高要求。傳統的運維面臨著架構日益複雜化、業務需求多樣化、運維數據海量化等問題和挑戰,如何應對新變化,提升運維管理效能,成為企業技術管理中的重中之重。
  • 跟著農村生活汙水運維人員跑鄉村
    近日,記者跟隨公司崧廈片區和丁宅片區的運維人員,前往所轄片區巡查農村生活汙水處理設施運行情況——翻山越嶺,只為呵護綠水青山近日上午9點多,陳溪鄉的早晨有些忙碌。一輛印有「上虞排水公司」字樣的運維車,朝著陳溪鄉旭峰村駛去。丁宅片運維組的聞海軍和徐佐超剛結束下管鎮東裡村和振新村共11處農村生活汙水處理終端的巡查養護,正趕往旭峰村巡查點。
  • 看網絡遙測技術如何助力精細化網絡運維?
    本文將通過介紹基於交換機硬體晶片的Network Telemetry技術方案(INT+gRPC),實現整網的流量可視化,為實現真正的可視化運維提供新的思路。對於合理的「微突發流」,可以依靠接入交換機設備內部的報文緩存機制解決微突發丟包問題。目前,主流交換晶片的片上緩存比較小,一般以Mbyte為單位。下圖是對應1G、10G和25G交換機常用晶片的緩存容量。
  • 中國風電運維產業全景圖(附運維市場分析、價格趨勢、競爭格局)
    風電運維主要分為三類,分別是由風電開發商組建的運維團隊;由風電整機商成立的風電運維公司以及第三方運維企業。運維產業上遊主要為各種風電設備整機廠商、風電配件商等,中遊為風電運維企業,下遊主要為風電業主單位及風電場。 國內的風電運維模式主要分為以下幾種:第一是開發商自主運維。
  • 海上風電運維的四大挑戰和八項建議
    與此同時,由此衍生出來的海上風力發電機組併網發電後的運維相關問題也受到了廣泛的關注。惡劣的維護環境和高難度的維護方式等原因,造成海上風力發電機組相對於陸上來說故障率更高。並且,隨著海上風電的發展,海上風電場建設不得不轉移到離岸更遠的地方、更深的水域。隨之而來的,是更遠的運輸距離、更惡劣的氣候條件、更嚴峻的物流挑戰,運維成本將會大幅增加。
  • 「汙水零直排區」運維工作推進會在浦陽召開
    同時,一行人深入探討浦陽鎮浦江苑「汙水零直排區」在運維建設過程中存在的問題,並商議相對應的解決方案。通過會議,進一步統一思想,並嘗試探索蕭山區汙水零直排相關運維的路徑和方式,形成蕭山特色運維體系和架構。
  • 「618」的運維黑洞怎麼填?雲幫手替你排憂解難
    今天,對於大部分人意味著剁手,可對於N多背後護持的運維人來說,那就是赤裸裸的———剁運維!「618」是典型的綜合運維管理場景現在的運維人員基本上無需關注機房、網絡、作業系統等底層設施。在不斷地演練後,如今的電商平臺早已採用全局可觀的綜合運維平臺,配合分布式數據來實現負載均衡,避免在凌晨高並發狀態下崩盤。運維人員將更多精力轉移到快速上線,快速迭代,去支持業務發展。對於運維人員來說,讓網站高效穩定地運行是他們最大的願望。
  • 光伏電站運維人員累嗎?光伏智能清潔機器人高效智能運維分布式光伏...
    檢修、檢測成本加大;單體體量較小,相應增加了運維養護的成本。光伏投資要想立於不敗之地,必須適應大環境,從補貼驅動向市場驅動轉變。      考慮到以上因素,分布式光伏電站運維不能像集中式電站那樣通過自建規模龐大的運維隊伍帶來較為滿意的運維結果。
  • 最適合工商業屋頂的光伏運維方式有哪些?成本是多少?
    適合工商業屋頂的運維方式家庭屋頂光伏電站一般採用人工清洗即可,工商業屋頂光伏面積大的話就會有成本考慮在內,電池板的清理工作或採用外包或自行兩種清理方式均可。天合光能負責工商業屋頂的運維人員告訴Solarbe小編三種比較適合工商業光伏屋頂的運維方式,定人定點運維、區域集中運維以及遠程集控運維。
  • 大道至簡,衍化至繁:證券企業系統高可用運維之道
    本文作者東方證券系統運行總部總監殷皓以東方證券的具體實踐為例,通過相關技術選型、業務場景應用詳細闡述了證券行業複雜業務場景系統高可用建設的具體實踐和發展思路。一、證券行業的行業屬性證券行業首先是處於證監會的監管之下,所以有很強的監管要求。證監會明確指出「市場發展越快,就越要嚴格監管」,因此證券行業面臨「依法監管、從嚴監管、全面監管」的監管環境。