访问服务器 request.getheader(origin)为null_服务器磁盘不足,1分钟快速搞定!
背景
對(duì)于系統(tǒng)服務(wù)器,一般由技術(shù)同學(xué)自行控制以及管理,但是針對(duì)服務(wù)器的監(jiān)控以及告警比較容易被人忽視。所以經(jīng)常會(huì)導(dǎo)致服務(wù)器上出現(xiàn)各種各樣的問(wèn)題。最常見(jiàn)的問(wèn)題,就是磁盤(pán)空間被服務(wù)日志給打滿(mǎn)了。當(dāng)服務(wù)器上磁盤(pán)已經(jīng)被打滿(mǎn),服務(wù)無(wú)法正常運(yùn)行時(shí),需要做的第一個(gè)工作就是去找到?jīng)]用的日志文件,進(jìn)行清空或者刪除操作。一、先看是不是那當(dāng)我們遇到類(lèi)似的情況,比如訪問(wèn)無(wú)反應(yīng),服務(wù)器上沒(méi)有日志了。第一步要做的,不是去想怎么處理,而是先確認(rèn)是不是磁盤(pán)問(wèn)題引起的。命令很簡(jiǎn)單df -h先看看我們對(duì)應(yīng)的目錄磁盤(pán)使用率,是否有富余。如果磁盤(pán)還有空間,那我們就要從其他角度去檢查服務(wù)的健康情況了。二、再看為什么當(dāng)我們發(fā)現(xiàn)具體目錄的使用率很高的時(shí)候,就可以進(jìn)入到對(duì)應(yīng)的目錄里去使用下一個(gè)工具。du -s *查看當(dāng)前目錄所有文件夾占用的磁盤(pán)空間,此時(shí)占用磁盤(pán)空間數(shù)值的單位是K。如果想更直觀些,可以使用du -sh *,此時(shí)單位根據(jù)大小可以自動(dòng)展示成K、M、G等單位。當(dāng)然也可以跟上排序,推薦使用du -s * | sort -nr | more。如果使用du -sh * | sort -nr最終的排序,并不是空間從大到小,而是數(shù)值較大的會(huì)排在前面,比如500M會(huì)排在2G之前,因?yàn)?00比2要大。通過(guò)上面的方法,可以快速定位到占用空間較大的文件夾,就可以一層一層去找到占用磁盤(pán)空間較大的文件了。三、解決方案定位到大文件后,最簡(jiǎn)單的,大家想到的都是直接rm -f 文件名。針對(duì)于歷史的日志文件。如果日志沒(méi)有用了,當(dāng)然可以用此種方案去處理,有一種情況,使用rm -f 文件名 是沒(méi)有作用的。那就是刪除的目標(biāo)文件,當(dāng)前是正在使用的狀態(tài)下,比如某個(gè)tomcat正在往這個(gè)日志里面輸出內(nèi)容,如果我們直接刪除此文件,文件雖然看不到了,但是磁盤(pán)空間并不會(huì)被釋放。有幾種方案可以處理當(dāng)前遇到的問(wèn)題。1.利用/dev/null設(shè)備來(lái)清空文件,e.g. cat /dev/null > filename,cp /dev/null > filename。2.把一個(gè)不存在的內(nèi)容重定向到文件中,e.g. > filename。3.輸出空字符串到文件中,e.g. echo “”?> filename。4. 利用“true”命令,e.g. true > filename,: > filename。5. 使用truncate命令來(lái)清空文件,e.g. truncate -s 0 filename。四、長(zhǎng)期解決方案每當(dāng)服務(wù)器磁盤(pán)出問(wèn)題時(shí),都可以通過(guò)上述的幾個(gè)步驟去搞定磁盤(pán)問(wèn)題。但是,如果此類(lèi)問(wèn)題經(jīng)常出現(xiàn),我們就需要不斷重復(fù)上述的步驟,還是比較麻煩的,而且我們會(huì)發(fā)現(xiàn),經(jīng)常出問(wèn)題的日志文件是在固定的幾個(gè)目錄下。這時(shí)候我們可以利用linux自帶的crontab來(lái)執(zhí)行一些固定的腳本來(lái)處理這些不斷積累的日志文件。針對(duì)歷史沒(méi)用的日志文件,我們可以每天定時(shí)去刪除幾天之前的日志。參考命令如下:00 02 * * * /usr/bin/find /opt/log/* -type f -mtime +3 -exec rm {} \;解釋一下,crontab的時(shí)間設(shè)置,每天凌晨2點(diǎn)執(zhí)行一次。可以根據(jù)自己負(fù)責(zé)的服務(wù)器情況,避免跟一些復(fù)雜的任務(wù)產(chǎn)生沖突。然后使用find命令找到日志目錄下的所有日志文件。-mtime +3指距離當(dāng)前時(shí)間96小時(shí)之前的所有文件。96/24=4天?為什么是+3呢,這個(gè)-mtime的參數(shù),值得去深入理解一下。-mtime 0 指過(guò)去24小時(shí)內(nèi)被修改過(guò)的文件。
-mtime 1 指過(guò)去48小時(shí)至24小時(shí)內(nèi)被修改過(guò)的文件。
-mtime 2 指過(guò)去72小時(shí)至48小時(shí)內(nèi)被修改過(guò)的文件。
-mtime 3 指過(guò)去96小時(shí)至72小時(shí)內(nèi)被修改過(guò)的文件。
-mtime -0 指當(dāng)前時(shí)間之前被修改過(guò)的文件(這不就是未來(lái)被修改過(guò)的文件嗎?),其實(shí)大家可以在服務(wù)器上試一下,如果當(dāng)前一個(gè)日志文件一直有內(nèi)容輸出,也是可以把這個(gè)文件找出來(lái)的,所以-mtime -0可以理解為此刻正在被修改的文件。
-mtime +0 就比較好理解了。就是在24小時(shí)之前被修改過(guò)的文件。
-mtime -1 指24小時(shí)之內(nèi)被修改過(guò)的文件,與-mtime 0的效果一致。
-mtime +1 指48小時(shí)之前被修改過(guò)的文件。
-mtime -2 指過(guò)去48小時(shí)之內(nèi)被修改過(guò)的文件。
-mtime +2 指過(guò)去72小時(shí)之前被修改過(guò)的文件。
-mtime -3 指過(guò)去72小時(shí)之內(nèi)被修改過(guò)的文件。
-mtime +3 指過(guò)去96小時(shí)之前被修改過(guò)的文件。
也許想看
怎樣在Apache Httpclient上做擴(kuò)展
除敏捷實(shí)踐外,項(xiàng)目管理還能做點(diǎn)什么?
你應(yīng)該知道的異步服務(wù)數(shù)據(jù)防丟失方案設(shè)計(jì)
一文弄懂Nginx最核心的配置
[手把手系列之]Docker 部署 vue 項(xiàng)目
好文我在看?
總結(jié)
以上是生活随笔為你收集整理的访问服务器 request.getheader(origin)为null_服务器磁盘不足,1分钟快速搞定!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中用def实现自动排序_漫画
- 下一篇: gpu处理信号_GPU显卡不仅用来打游戏