閱讀783 返回首頁    go 阿裏雲 go 技術社區[雲棲]


網站登錄不了引發的一係列問題

在2017年雙十一之前一天,網站突然登錄不了
不過,已經有提示,是由於session不能保存引起的。
那麼問題來了:session為什麼不能保存了呢?
首先查看下session配置的保存路徑的權限,沒有問題!

一個原因就是硬盤已經滿了,不能存放文件了,使用命令

df -h

查看服務器硬盤使用情況,還有30%的未使用。這個排除!

突然想起之前網站無法上傳文件時出現問題時發現是 inode惹的禍!
inode是何許人也?在這裏做下簡單說明:

inodes 譯為索引節點,每個文件對應一個inode,裏麵存放的是文件的元信息,比如創建時間,大小等信息。
每個inode節點的大小,一般是128字節或256字節。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小為128字節,每1KB就設置一個inode,那麼inode table的大小就會達到128MB,占整塊硬盤的12.8%。
由於每個文件都必須有一個inode,因此有可能發生inode已經用光,但是硬盤還未存滿的情況。這時,就無法在硬盤上創建新文件。

使用 命令

df -i

查看inode使用情況,果然,已經使用100%了!
inode怎麼就滿了呢?
肯定是產生了很多垃圾文件,正常情況下不應該啊,什麼小文件會大量產生呢,一個是日誌文件,查看日誌分割設置,是每天生成一個,這樣的話,也不應該啊。
這就想到了一個服務叫Crond,對,就是服務器定時任務。它怎麼會產生那麼多文件呢。
定時任務定時執行,但是,如果執行中有問題呢,就會給root賬號發送郵件,可以執行下麵命令執行

cat /etc/crontab

獲得下麵輸出

[root@hellworld]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="root"
HOME=/

MAILTO 後麵的寫的是root,就是向root用戶發送郵件。我就把後麵的root去掉了。看它還怎麼發郵件。

然後就去文件夾

/var/spool/postfix/maildrop

刪掉發郵件生成的垃圾文件,再用df -i命令查看,就正常多了
再測試網站登錄,可以了。哈哈,這個inode還真是威力大啊!

過了一段時間後,發現服務器多了很多進程,都是postfix 和maildrop 相關的。。。。
這是怎麼回事的,稍後咱們接著說!

最後更新:2017-11-12 18:04:08

  上一篇:go  linux的du使用方法
  下一篇:go  shell正則表達式匹配樣例