今天凌晨客戶突然說系統後台登入有問題,突然又可以了。但過一會客戶又說進入後台商品讀取不了,前台購物車加入商品也沒有反應!

我的第一直覺是不是系統記憶體不夠了,使用top指令看了一下,發現記憶體只使用了一半。

後來發現原來是MySQL服務斷了,重啟之後有好了一下下。但後來又發現還是無法將商品加入購物車,後台商品依然讀取不了。

表示SESSION還是有問題的,最後反覆測試,發現到系統會出現session_start(): open(SESSION_FILE, O_RDWR) failed: No space left on device (28)

這個錯誤,從字面上看很明顯就是說,硬碟空間不夠了~ 

馬上在終端用 df -h 查看,發現不對啊~空間只使用了50%,硬碟空間還有剩啊~ (以前其他系統也的確發生過硬碟滿的問題)

後來想到用 df -i 查看看,發現原來是Inodes完全用盡了。


但網路上大部分都寫說是 /tmp/ 、 /cache/ 、 /var/log/  ....這些資料夾佔用了過多的Inodes,但我查了一番發現這些資料夾使用的Inodes使用量都個位數的。

苦惱不知道到底是哪裡在占Inodes,但又很緊急得馬上用好,只好先升級VPS主機規格。的確升級後問題解決了,但還是沒找出問題的原因,只好開始查其他資料夾,首先先用了下面這個指令

for i in /*; do echo $i; find $i |wc -l; done

查出到/var/ 這個資料夾使用了最多的Inodes

for i in /var/*; do echo $i; find $i |wc -l; done

就按照這流程一步步的往下查,最後居然是某個古早被荒廢的專案(但網站沒關),只要有訪客就會產生N筆檔案,一段時間沒去理會產生了幾百萬筆檔案導致Inodes都被吃光了。照理說這系統會自動去處理,並刪除這些暫存資料的,但這專案進行到一半就遺棄了...新的一年就來刷存在感 哈


(好久沒經營這Blog了,每新的一年都又會重新燃起要認真經營的念頭,但要不是工作忙、就是累、就是懶、各種藉口,不知這次能撐多久)


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/failed-no-space-left-on-device-28