如何解決磁盤滿載的問題
已經(jīng)很久沒有關(guān)注自己的博客了,待回來細(xì)看時,發(fā)現(xiàn)文章下面自己寫的評論服務(wù)已經(jīng)掛了。雖然之前的大部分功能并沒有完全完成,但作為一個有追求的developer,怎么能坐視不管呢。接下來就大致簡單復(fù)現(xiàn)一下發(fā)現(xiàn)和解決問題的過程。
定位問題
首先,這個評論服務(wù)是部署在 搬瓦工 下的(咳咳,別問我為什么,自己鬧著玩的東西,就用便宜的VPS搭建咯)。第一步,還是到搬瓦工對應(yīng)的管理面板下查看一下機(jī)器的狀態(tài),貌似一切正常,除了這一抹紅色:
對,10G磁盤都滿了!這很有可能是導(dǎo)致評論服務(wù)掛掉的原因。所以,還是ssh登陸到服務(wù)器上去,看看到底是什么導(dǎo)致這10G內(nèi)存(上次關(guān)注它的時候連10%都沒用到)都用完了。接下來,就需要在命令行里查詢具體是哪個目錄占了很多資源了。通過下面的這樣的指令,就可以發(fā)現(xiàn)是哪一塊在我沒關(guān)注的這一階段默默膨脹了。
- df -h
- du -hs /*
- du -hs /root/*
- du -hs /var/log/*
果然,原來都是nginx的log搗的鬼(居然膨脹到了將近9G,那還得了)!
再cd到對應(yīng)的目錄查看具體是哪個文件:
- cd /var/log/nginx
- du -hs *
罪魁禍?zhǔn)讘?yīng)該就是這Ngnix的access.log
解決
問題的原因找到了,解決起來就簡單了。access.log記錄了所有的nginx處理的請求記錄,這肯定是隨著時間的積累,信息量已經(jīng)越來越大,以至于到了這個地步。不過這個log現(xiàn)在對于我而言沒有太過價值,所以直接干脆 rm -rf ./access.log 刪掉該文件。不過,當(dāng)我開心地再次檢查內(nèi)存狀況(df -h )時,發(fā)現(xiàn)內(nèi)存占用和之前一樣,依然有10G。這不科學(xué)?確實(shí)不科學(xué),這個時候按經(jīng)驗(yàn)來說,很多人可能會選擇重啟服務(wù)器(但我還是不希望為了這個重啟云上的服務(wù)器)。網(wǎng)上大概了解下原因:可能存在一些運(yùn)行進(jìn)程在使用未鏈接(實(shí)際已經(jīng)刪除了)的文件。所以,檢查一下是否這樣的進(jìn)程在運(yùn)行(其實(shí),這時候基本上知道是nginx了):
- ls -ld /proc/*/fd/* 2>&1 | fgrep '(deleted)'
果然,就是nginx。只要重啟nginx服務(wù)就能夠讓 df 命令報出正式的內(nèi)存狀況。
- service nginx restart
畢,回到最初的問題上(是評論系統(tǒng)掛了),刷新一下博客頁面,發(fā)現(xiàn)評論回來了。
簡要回顧原因
不難看出,評論系統(tǒng)掛了其實(shí)是因?yàn)槠渌诘姆?wù)器上nginx服務(wù)運(yùn)行不正常。nginx服務(wù)運(yùn)行不正常是因?yàn)樗涗浀膌og已經(jīng)撐滿了整個硬盤??磥砗笃诘媒onginx加上log壓縮或者定期清理任務(wù)了。但是,還是等我先把這個評論系統(tǒng)的“評論”功能實(shí)現(xiàn)吧,啊哈哈哈[羞恥笑]。
Reference