伺服器效能變慢 c盤temp檔案夾存在大量sess開標頭檔的問題原因及解決

來源:互聯網
上載者:User

通過搜尋找到了問題所在並進行瞭解決,在此詳細記錄以供參考。

一、 temp檔案夾大量檔案的刪除

以sess開頭的存在於temp系統臨時檔案夾的檔案,是php的session儲存檔案,由於php建立了session卻在到期後沒有成功刪除,於是導致大量檔案的積累。

清理方法很簡單,建立批次檔del_temp.bat,其中寫入如下命令:

複製代碼 代碼如下:del %TEMP% /s /q *.*

儲存後雙擊運行,即開始進行刪除處理(也可直接在cmd命令列中輸入執行)
你也可以將其加入開機啟動項,以使得每次重啟系統後即執行一次刪除處理。

提示:

1. 如果這裡執行一直顯示無法進行(志文工作室最先遇到的情況即如此),則可能是temp檔案夾及其中部分檔案正處於使用狀態,那麼你可以在同目錄下建立一個檔案夾tmp,然後修改系統內容變數temp和tmp的位置為此,接著重啟系統使得新的臨時目錄生效,此時即可對temp檔案任意刪改了。

2. 志文工作室的伺服器temp檔案夾記憶體在數十萬這樣的檔案,清理了若干小時才完成。故在進行處理前應停止iis:

net stop iisadmin 關閉iis服務
net start iisadmin 開啟iis服務

3. 當然,你不希望在處理的過程中讓網站關閉如此之久,所以你應依次進行的操作是:

1>. 關閉iis
2>. 更改php儲存session的預設路徑(參考後面內容)
3>. 開啟iis,檢查伺服器所有網站是否正常
4>. 執行del_temp.bat進行清理

二、修改php的Session儲存路徑session.save_path

1. 開啟php.ini檔案,尋找到

“;session.save_path = "/tmp"”
將其修改為指定的位置用於儲存session,例如,志文工作室將其改為:

session.save_path = "c:/tmp/phpsession"
當然你也可以使用分級目錄的方式,比如改為這樣:

session.save_path="5;c:/tmp/phpsession"

關於session的分級目錄存放請參考後續內容詳解

2. 建立檔案夾路徑:c:/tmp/phpsession

3. 添加該路徑(即phpsession檔案夾)的internet來賓賬戶修改和寫入許可權,注意最好不要給予執行許可權。

4. 啟動iis,觀察該目錄是否會有新的session檔案產生。

三、php的session多級目錄存放解決大量臨時檔案效率問題

session多級存放可以緩解一個目錄下session檔案過多帶來的讀寫效率問題。

php.net上針對sesstion配置相關的說明:http://cn.php.net/manual/zh/ref.session.php

session.save_path string

session.save_path 定義了傳遞給儲存處理器的參數。如果選擇了預設的 files 檔案處理器,則此值是建立檔案的路徑。預設為 /tmp。參見 session_save_path()。
此指令還有一個可選的 N 參數來決定會話檔案分布的目錄深度。例如,設定為 '5;/tmp' 將使建立的會話檔案和路徑類似於

/tmp/4/b/1/e/3 /sess_4b1e384ad74619bd212e236e52a5a174If
要使用 N 參數,必須在使用前先建立好這些目錄。在 ext/session 目錄下有個小的 shell 指令碼名叫 mod_files.sh 可以用來做這件事。此外注意如果使用了 N 參數並且 N 大於 0,那麼將不會執行自動記憶體回收,更多資訊見 php.ini。
另外如果用了 N 參數,要確保將 session.save_path 的值用雙引號 “quotes” 括起來,因為分隔字元分號( ;)在 php.ini 中也是注釋符號。

參考以上說明,在定義session.save_path中可以定義多級存放的路徑,於是我們可以修改php.ini中的session.save_path為:

session.save_path = “2;/data/session_tmp”

如此將session檔案分成兩級存放,即類似於

/data/session_tmp/4/b/sess_4b1e384ad74619bd212e236e52a5a174If

取session的前兩位字元作為二級目錄索引,但是php並不組建目錄,需要自己手工產生,這裡提供一個php指令碼來產生初始的目錄。

複製代碼 代碼如下:<?php
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
echo "mkdir ".$param."\n”;
exec("mkdir ".$param);
}
}

for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
makeDir('/data/session_tmp/'.$string[$i].'/'.$string[$j]);
}
}
?>

session目錄分級處理之後,IO處理值增加,http進程降低,web處理效率明顯好轉

相關參考

session.save_path目錄大量session臨時檔案帶來的伺服器效率問題
http://wenku.baidu.com/view/b3921d8ea0116c175f0e484e.html
IIS PHP環境Temp檔案夾的許可權問題引起的網站故障
http://www.jb51.net/article/34301.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.