前幾天不知為何,伺服器抽風嚴重…
伺服器非常慢,把WINDOWS2003重啟了,結果連不上伺服器。結果悲劇的去了機房。
尋找不出什麼問題,GHOST恢複系統。
幾天后回去又裝了個新站上去。再過兩天后,問題又出現了。
排查過程 檢查網頁伺服器,病毒,木馬?是否被入侵? 檢查資料庫伺服器,CPU,記憶體,網路一切正常,相應的連接埠也做了 IP 限制,只允許網頁伺服器訪問,查看記錄檔也沒有異常情況 檢查其餘的 .Net 網站,速度正常,沒有任何問題 檢查其餘的 Php 網站,架構方法一樣,也沒有任何問題(其餘的 php 網站訪問量相對於論壇來說小很多) 建立一個應用程式集區和網站應用程式程式,單人訪問速度沒有問題,說明 php程式沒有問題 檢查 Php 設定,發現沒有異常
綜合以上因素,所以基本可以確定問題主要來源於某個小問題,然後當訪問人數過多的時候就會體現出來。
那這個問題是什麼呢?
這時候想到去看一下 Php 記錄檔,開啟 c:\windows\temp 下的 Php 記錄檔,突然… 卡死了!
原來這個檔案已經達到了 800多 MB,難道是這個問題?
記得以前 IIS 下所有網站都出現了訪問緩慢的問題,然後發現 IIS 記錄檔達到了幾個 G,禁用 IIS 日誌後恢複正常。
難道也是這個問題?果斷禁用了 Php error log,並刪除了這個檔案後,略有改善,但是感覺還是沒解決…
正在彷徨時,忽然發現 Temp 檔案夾下有大量 sess_ 開頭的檔案!(之前開啟 Temp 檔案夾的時候就特別慢)數量竟然達到了 10W 個!總容量雖然只有 300MB ,但是佔用空間卻達到了 3G
看上去問題就出在這裡了!
關於 NTFS 下的檔案數量
NTFS 的優越性就不用說了,也早就是主流了…
NTFS 下的最大檔案數是 4,294,967,295個 (2^32 – 1)
但是為什麼僅僅 10W 個檔案就讓系統慢成這樣了呢?好吧,都說是理論值了… 不知道有沒有人測試過,但 10W 個的確非常多了…
解決方案
刪除這些檔案是必需的,這個過程很痛苦… 因為系統卡死了…
後藉助 del *.* /q /s 後才成功將其刪光
可是光刪也不是辦法,總有一天它還是會滿的…
這些檔案其實是 Php 儲存 Session 的檔案,一個 Session 對應了一個檔案,但是 Session 結束的時候不應該刪除嗎?
其實 Php 是會刪除的,但是由於許可權的問題,而導致它不能及時的刪除了,以上就是 IIS_USERS 組的預設許可權。
它並沒有刪除的許可權 !難怪沒辦法刪除!
知道這個後就簡單了,給 IIS_USERS 加上刪除的許可權就 OK 了!
修改好後,Temp 檔案夾下的檔案數一直維持在一個數量級,而沒有明顯的變化~