解決IIS配置問題
解決網站運行一段時間會變慢的問題
http://blog.csdn.net/rryqsh/article/details/8156558
1. IIS 7 應用程序池自動回收關閉的解決方案
如果你正在做ASP.NET,那肯定會用到IIS
如果你想在ASP.Net Application中加入某個定時任務,那想必一定是用一個線程在不停地做定時計算
那假設我們在自己的ASP.NET應用程序中加入了Quartz.NET框架,並且配置等等都OK了。
這個站點訪問量很少,現在只有幾個人上班的時候才會使用,結果第二天過來一看,後臺調度的線程和計算任務都停止了,如果你抓取了
Application_End事件,會發現這個事件居然被調用了。
那一定是IIS的應用程序池回收的機制在作怪了。因為IIS的默認設置裏面,如果一個站點所處的應用程序池超過一段時間沒有被訪問或者請求,IIS
就會自動回收這個程序池,並且把進程殺掉。那進程裏面的線程肯定也活不下來了。
但是我們可以通過設置應用程序池參數使其不會被簡單的自動回收(有些情況無法避免,比如熱部署的站點,錯誤數量超限等等)
在IIS中找到這個站點所用的程序池,點擊“高級設置...”
在打開的列表中更改以下設置:
回收——固定時間間隔(分鐘) 改為 0
——虛擬/
進程模型——閑置超時(分鐘) 改為 0
這樣子,一般情況下程序池就不會被自動回收了,後臺一些簡單的計算線程就會正常工作
2. IIS應用程序池自動回收問題的有效解決辦法
IIS可以設置定時自動回收,默認回收是1740分鐘,也就是29小時。IIS自動回收相當於服務器IIS重啟,應用程序池內存清空,所有數據被清除,相當於IIS重啟,在度量快速開發平臺服務器端,為了減小數據庫負擔,內存中暫存了很多信息,不適合頻繁的回收,因為回收會造成服務器端所有存在內存中的數據丟失,如果沒有及時保存到數據庫中,可能導致程序出現問題。而如果系統使用高峰時期,並不適合回收,回收可能導致幾十秒
(圖1)
發生配置更改時禁止回收 :如果為True,應用程序池在發生配置更改時將不會回收。 固定時間間隔(分鐘): 超過設置的時間後,應用程序池回收,為0意味著應用程序池不會按固定間隔回收。系統默認設置的時間是1740(29小時)。 禁用重疊回收: 如果為true,將發生應用程序池回收,以便在創建另一個工作進程之前退出現有工作進程。 請求限制: 應用程序池在回收之前可以處理的最大請求數。如果值為0,則表示應用程序池可以處理的請求數沒有限制。 生成回收事件日誌條目: 每發生一次指定的回收事件時便產生一個事件日誌條目,裏面的明細設置不一一介紹。
根據度量平臺服務端配置情況看,IIS默認設置的1740分鐘回收進程的策略並不合理,因為每1740分鐘回收,在過程中可能就處於用戶使用系統的高峰時段,為避免可能在高峰時段引起非可控問題,我們建議在每周六深夜(例如晚上1點,2點)進行IIS回收。
如果我們在IIS應用程序池的高級設置中,進行回收設置,那麽只有兩種方式進行,一種是固定時間間隔,一種是手動回收。固定時間間隔設置,並不太好在深夜設置,以保證每周周六深夜執行回收。我們推薦采用windows “任務計劃程序”配置一個操作系統定時任務執行腳本程序來實現IIS回收,設置方便,也可以靈活調整。 要通過腳本執行IIS的功能,需要在IIS安裝配置的時候,勾選上管理工具中的“IIS管理腳本和工具”(見下圖)。
用vbs腳本及批處理文件,結合任務計劃程序,保證在每周六深夜1點執行IIS回收。
Recyclepool.vbs 文件內容: appPoolName = WScript.Arguments(0) Set oWebAdmin = GetObject("winmgmts:root\WebAdministration") Set oAppPool = oWebAdmin.Get("ApplicationPool.Name=‘" + appPoolName + "‘") oAppPool.Recycle set fso=createobject("scripting.filesystemobject") if (fso.fileexists("d:\appPool\recycleIISPool.log")) then ‘1-forreading,2-forwriting,8-appending set file=fso.opentextfile("d:\appPool\recycleIISPool.log",8,ture) else set file=fso.createtextfile( "d:\appPool\recycleIISPool.log",8,ture) end if ‘write(x)寫入x個字符,writeline寫入換行,writeblanklines(n)寫入N個空行 file.writeline now&" 應用程序池“"&appPoolName &"”已經回收成功。" file.close |
Recyclepool.bat 文件內容: cscript D:\appPool\recyclepool.vbs platweb |
用vbs腳本及批處理文件,結合任務計劃程序,保證在每周六深夜1點執行IIS回收。
成功用windows計劃任務解決IIS定時回收問題。
解決IIS配置問題