IIS6.0應(yīng)用程序池回收設(shè)置分析
1.網(wǎng)頁(yè)上顯示
您試圖在此 Web 服務(wù)器上訪問(wèn)的 Web 應(yīng)用程序當(dāng)前不可用。請(qǐng)點(diǎn)擊 Web 瀏覽器中的“刷新”按鈕重試您的請(qǐng)求。
管理員注意事項(xiàng):
詳述此特定請(qǐng)求失敗原因的錯(cuò)誤信息可在 Web 服務(wù)器的系統(tǒng)事件日志中找到。請(qǐng)檢查此日志項(xiàng)以查明導(dǎo)致該錯(cuò)誤發(fā)生的原因。
2.windows事件查看器-應(yīng)用程序Log
The state server has closed an expired TCP/IP connection. The IP address of the client is 127.0.0.1. The expired Read operation began at 05/21/2007 20:12:04.
解決的方法很簡(jiǎn)單,把程序?qū)?yīng)的IIS應(yīng)用程序池回收一下就好了。
可是為什么會(huì)出現(xiàn)這個(gè)原因呢?還有為什么回收一下就好了呢?回收做了些什么?
出現(xiàn)的原因
在網(wǎng)上搜索了一翻,發(fā)現(xiàn)主要是一下幾個(gè)問(wèn)題,當(dāng)然還有其他原因
1).Framework的問(wèn)題,例如1.0和2.0版本
2)aspnet_wp.exe 問(wèn)題
3)安全更新程序 (KB886903)
可惜我們服務(wù)器出現(xiàn)的問(wèn)題都不是以上幾點(diǎn)引起的,經(jīng)過(guò)我的分析認(rèn)為是寫的很爛很爛的程序占用了大量的資源最后導(dǎo)致內(nèi)存泄漏,導(dǎo)致IIS的 進(jìn)程當(dāng)?shù)袅恕?上Я顺绦蛭沂菦](méi)辦法改,都是別人寫的,也不會(huì)改。不過(guò)我不可能每次出現(xiàn)這個(gè)問(wèn)題就登陸到遠(yuǎn)程服務(wù)器上去回收一次吧,所以只有讓他自動(dòng)回收 了。
自動(dòng)回收有好幾種方式,也不知道那一種比較適合,而且回收工作進(jìn)程是會(huì)把保存在內(nèi)存里的Session清空,造成用戶需要重新登陸的問(wèn)題,所以自動(dòng)回收要越少越好,以保證不會(huì)因?yàn)槠渲械囊粋€(gè)用戶使用了那個(gè)很爛的程式導(dǎo)致其他的用戶都要重新登陸。
如果用了狀態(tài)服務(wù)器或者是把Session保存到了數(shù)據(jù)庫(kù)中去的程序自動(dòng)回收后肯定是沒(méi)有任何影響的,請(qǐng)求也不會(huì)中斷還是一樣繼續(xù)運(yùn)行,只是換了個(gè)工作進(jìn)程繼續(xù)為客戶端工作,客戶端是感覺(jué)不到的,當(dāng)初沒(méi)有為了方便沒(méi)有把Session保存到數(shù)據(jù)庫(kù)真是失策!
1.根據(jù)運(yùn)行時(shí)間
系統(tǒng)默認(rèn)是1740分鐘,也就是29個(gè)小時(shí),這個(gè)不是很好控制,建議不用,也就是去掉那個(gè)勾。
2.請(qǐng)求數(shù)目
這個(gè)要看具體的情況了。如果只有10個(gè)請(qǐng)求,可是有5個(gè)都在請(qǐng)求那個(gè)比較占資源的頁(yè)面(可能是統(tǒng)計(jì)年度報(bào)表之類),這個(gè) 時(shí)候就會(huì)出現(xiàn)進(jìn)程當(dāng)?shù)舻那闆r,如果請(qǐng)求有1000個(gè)可是一個(gè)也沒(méi)運(yùn)行比較占資源的頁(yè)面,這個(gè)時(shí)候進(jìn)程肯定是很正常的,所以根據(jù)請(qǐng)求的數(shù)目來(lái)決定也不符合實(shí) 際需要。
3.計(jì)劃的時(shí)間
這個(gè)其實(shí)很好,不過(guò)具體什么時(shí)間回收好呢?通常我們都是設(shè)置上班前和下班后回收,這個(gè)時(shí)候回收是有必要的,不過(guò)針對(duì)出現(xiàn)隨時(shí)可能出現(xiàn)是高內(nèi)存占用并不是很適用。
4.內(nèi)存(虛擬內(nèi)存或已使用的內(nèi)存)
這個(gè)針對(duì)出現(xiàn)內(nèi)存問(wèn)題引起的進(jìn)程當(dāng)?shù)魧?shí)在太合適了,不過(guò)設(shè)置多大的值比較好是一個(gè)很重要的問(wèn)題, 我是根據(jù)每次出現(xiàn)問(wèn)題時(shí)進(jìn)程是實(shí)際占用情況決定的。我們的服務(wù)器內(nèi)存是2G,通常其他的一些服務(wù)會(huì)占用掉600多M,我發(fā)現(xiàn)有每次進(jìn)程都是到1G多的時(shí)候 當(dāng)?shù)簦栽O(shè)置了最大使用內(nèi)存為1000M的時(shí)候自動(dòng)回收,設(shè)置后一直都沒(méi)出現(xiàn)問(wèn)題了。要查看進(jìn)程的占用直接用windows任務(wù)管理器就好,值不能太小 了,否則如果訪問(wèn)量都很大超過(guò)這個(gè)值的時(shí)候也會(huì)自動(dòng)回收,這個(gè)就很沒(méi)必要了。一定要多多觀察進(jìn)程的實(shí)際占用情況再做決定。
在IIS的配置文件里面 如果配置了IIsApplicationPools節(jié)點(diǎn)的LogEventOnRecycle屬性,每次回收的時(shí)候IIS的日志文件會(huì)根據(jù) LogEventOnRecycle屬性的值紀(jì)錄下相關(guān)的信息,也個(gè)也是設(shè)置自動(dòng)回收時(shí)的一個(gè)重要參考,不過(guò)由于這個(gè)日志文件只能看幾個(gè)小時(shí)以前的紀(jì)錄, 當(dāng)前的紀(jì)錄要幾個(gè)小時(shí)后才寫進(jìn)去,所以看起來(lái)不方便,郁悶!
現(xiàn)在暫時(shí)根據(jù)最大占用內(nèi)存自動(dòng)收回以前的問(wèn)題是解決了,暫時(shí)也發(fā)現(xiàn)什么新問(wèn)題了,也不知道其他地方都是怎么設(shè)置的,是不是還有更好的方法呢?希望到了這篇文章的人能提點(diǎn)寶貴意見(jiàn),大家一起交流一下經(jīng)驗(yàn)。
IIS的配置文件在windows的安裝目錄下(C:/WINDOWS/system32/inetsrv/MetaBase.xml),直接修改配置文件需要停止IIS服務(wù),修改前記得備份。
部分配置信息,寫的好玩的
<IIsApplicationPool Location ="/LM/W3SVC/AppPools/DefaultAppPool"
AppPoolAutoStart="TRUE"
PeriodicRestartMemory="2000" //最大虛擬內(nèi)存MB
PeriodicRestartPrivateMemory="1000" //最大占用內(nèi)存MB
PeriodicRestartRequests="1000" //請(qǐng)求數(shù)
PeriodicRestartSchedule="07:50 //自動(dòng)回收時(shí)間
12:00
20:00"
>
</IIsApplicationPool>
以下是摘錄IIS自帶的幫助。
工作進(jìn)程回收如何工作
根據(jù)應(yīng)用程序池回收的配置方式,萬(wàn)維網(wǎng)發(fā)布服務(wù)(WWW 服務(wù))可以使用兩種方法來(lái)回收已分配的工作進(jìn)程:
•默認(rèn)情況下,WWW 服務(wù)建立“重疊回收”,即繼續(xù)運(yùn)行要終止的工作進(jìn)程,直到啟動(dòng)新的工作進(jìn)程后為止。
•或者,WWW 服務(wù)可以終止一個(gè)工作進(jìn)程,然后啟動(dòng)一個(gè)新的工作進(jìn)程(如果工作負(fù)荷允許執(zhí)行此操作的話)。
注意 當(dāng) WWW 服務(wù)回收某個(gè)工作進(jìn)程時(shí),它并不斷開(kāi)現(xiàn)有的 TCP/IP 連接。HTTP 協(xié)議堆棧 (HTTP.sys) 建立并維護(hù) TCP/IP 連接。
在重疊回收方案中,要回收的進(jìn)程繼續(xù)處理請(qǐng)求,同時(shí) WWW 服務(wù)創(chuàng)建一個(gè)替代工作進(jìn)程。在停止舊工作進(jìn)程之前啟動(dòng)新的工作進(jìn)程,然后將請(qǐng)求定向到新的進(jìn)程。此設(shè)計(jì)可以防止服務(wù)中斷,因?yàn)榕f進(jìn)程關(guān)閉前仍然保持與 HTTP.sys 的通信以處理請(qǐng)求。因?yàn)榭芍丿B關(guān)閉或啟動(dòng)的關(guān)閉超時(shí)值是可以配置的,所以在工作進(jìn)程仍在處理請(qǐng)求的同時(shí)可以終止該進(jìn)程(如果它在時(shí)間限制內(nèi)沒(méi)有處理完請(qǐng)求 的話)。
在配置應(yīng)用程序池以基于運(yùn)行時(shí)間來(lái)回收工作進(jìn)程時(shí),可以在設(shè)置的運(yùn)行時(shí)間內(nèi)回收所有的工作進(jìn)程,但不能同時(shí)回收所有這些工作進(jìn)程??梢栽谠O(shè)置的時(shí)間內(nèi)的不同時(shí)段進(jìn)行回收應(yīng)用程序,以減少客戶端請(qǐng)求服務(wù)的中斷次數(shù)。
類似地,在配置應(yīng)用程序池以基于處理請(qǐng)求的數(shù)目來(lái)回收應(yīng)用程序時(shí),可以每隔一段時(shí)間回收一次以分擔(dān)與工作進(jìn)程回收有關(guān)的系統(tǒng)開(kāi)銷。
何時(shí)使用工作進(jìn)程回收
在決定是否啟動(dòng)工作進(jìn)程回收時(shí),應(yīng)考慮以下常規(guī)指南。最佳的解決方案是修復(fù)引起故障的應(yīng)用程序。但是,并非總能使用重新編碼,尤其是運(yùn)行的其他應(yīng)用程序代碼無(wú)法修改時(shí)。
在以下情況下考慮使用回收:
- 無(wú)法修復(fù) Web 服務(wù)器上您所主控的有故障的應(yīng)用程序。
- 遇到不能確定的或間斷性的故障。
- 您懷疑應(yīng)用程序由于性能監(jiān)視的原因而泄漏內(nèi)存。
- 先前已實(shí)施了臨時(shí)性的重置解決方案,例如,計(jì)劃執(zhí)行 IISReset 命令行實(shí)用工具。
在以下情況下,可能根本不需要使用回收:
- 您所主控的網(wǎng)站只包含靜態(tài)內(nèi)容,并且不包含自定義 Internet 服務(wù)器 API (ISAPI) 應(yīng)用程序。
- 您所主控的應(yīng)用程序已經(jīng)過(guò)完全測(cè)試,并且不會(huì)出現(xiàn)內(nèi)存或資源分配問(wèn)題。
要有效地使用回收,請(qǐng)仔細(xì)檢查回收所依據(jù)的標(biāo)準(zhǔn)(如下表中所示)。
回收依據(jù)的條件 | 描述 | 使用時(shí)間 |
---|---|---|
ISAPI 請(qǐng)求 | 根據(jù)應(yīng)用程序池中 ISAPI 的請(qǐng)求回收工作進(jìn)程。 | ISAPI 擴(kuò)展可以將其自身聲明為運(yùn)行狀況差。 |
運(yùn)行時(shí)間 | 根據(jù)用戶指定的時(shí)間(分鐘)回收工作進(jìn)程。 | 存在故障的應(yīng)用程序的運(yùn)行時(shí)間過(guò)長(zhǎng)。 |
請(qǐng)求數(shù)目 | 當(dāng)超文本傳輸協(xié)議 (HTTP) 請(qǐng)求超出某個(gè)特定閾值時(shí)回收工作進(jìn)程。 | 根據(jù)應(yīng)用程序接收到的請(qǐng)求數(shù)目,應(yīng)用程序出現(xiàn)故障。 |
計(jì)劃的時(shí)間 | 在 24 小時(shí)內(nèi)的指定時(shí)間進(jìn)行回收。 | 條件與運(yùn)行時(shí)間的條件類似。 |
虛擬內(nèi)存(保留的內(nèi)存加上已使用的內(nèi)存) | 當(dāng)工作進(jìn)程虛擬內(nèi)存達(dá)到某個(gè)特定閾值時(shí)回收該工作進(jìn)程。 | 內(nèi)存堆棧碎片過(guò)多(這是由于應(yīng)用程序保留多次內(nèi)存造成的)。癥狀是虛擬內(nèi)存持續(xù)增加。 |
已使用的內(nèi)存 | 當(dāng) W3wp.exe 進(jìn)程使用的內(nèi)存達(dá)到某個(gè)特定閾值時(shí)回收工作進(jìn)程。 | 某些應(yīng)用程序出現(xiàn)內(nèi)存泄漏。 |
根據(jù)需要 | 當(dāng) IIS 管理員可以使用 Microsoft? 管理控制臺(tái) (MMC) 或腳本控制整個(gè)應(yīng)用程序池的回收時(shí)開(kāi)始回收。 | 在其他站點(diǎn)啟動(dòng)并運(yùn)行時(shí),有一個(gè)引起故障的應(yīng)用程序池。請(qǐng)考慮回收該應(yīng)用程序,而無(wú)需重置整個(gè) WWW 服務(wù)。 |
相關(guān)文章
NET Runtime Optimization Service 1101 錯(cuò)誤的解決方法
這篇文章主要介紹了NET Runtime Optimization Service 1101 錯(cuò)誤的解決方法,需要的朋友可以參考下2015-09-09win2008 r2中IIS7.5及以上設(shè)置404錯(cuò)誤頁(yè)面的正確方法
404錯(cuò)誤頁(yè)面的設(shè)置,不僅僅可以提高用戶體驗(yàn)度,從SEO方面考慮,也是非常重要的。今天,筆者在這里介紹一下在windows 2008下如何設(shè)置404錯(cuò)誤頁(yè)面,需要的朋友可以參考下2017-09-09遠(yuǎn)程桌面連接時(shí)提示終端服務(wù)器超出了最大允許連接數(shù)解決方法小結(jié)
這幾天頻繁的遠(yuǎn)程登陸服務(wù)器,由于沒(méi)有及時(shí)注銷或者其他情況,早上再次登陸時(shí)系統(tǒng)提示:終端服務(wù)器超出了最大允許連接數(shù)。2010-09-09Win2003服務(wù)器系統(tǒng)文件權(quán)限設(shè)置小結(jié)
系統(tǒng)文件對(duì)系統(tǒng)的穩(wěn)定性有無(wú)可爭(zhēng)議的作用,同時(shí)對(duì)系統(tǒng)的操作也是通過(guò)這些系統(tǒng)文件進(jìn)行的。通過(guò)設(shè)置系統(tǒng)文件的訪問(wèn)權(quán)限,讓一些操作只能由管理員來(lái)操作。這樣系統(tǒng)的安全性就大大提高。2010-05-05windows下jsp+mysql網(wǎng)站環(huán)境配置方法
為參考網(wǎng)上的資料安裝jsp網(wǎng)站的總結(jié).2008-09-09windows使用nginx實(shí)現(xiàn)網(wǎng)站負(fù)載均衡測(cè)試實(shí)例
如果你關(guān)注過(guò)nginx,必定知道nginx這個(gè)軟件有什么用的,如果你的網(wǎng)站訪問(wèn)量越來(lái)越高,一臺(tái)服務(wù)器已經(jīng)沒(méi)有辦法承受流量壓力,那就增多幾臺(tái)服務(wù)器來(lái)做負(fù)載吧。2010-03-03各版本IIS下ASP.net請(qǐng)求處理過(guò)程分析
ASP.NET是一個(gè)非常強(qiáng)大的構(gòu)建Web應(yīng)用的平臺(tái),它提供了極大的靈活性和能力以致于可以用它來(lái)構(gòu)建所有類型的Web應(yīng)用。2008-08-08Windows下使用virtualenv創(chuàng)建虛擬環(huán)境的方式(兩種)
這篇文章主要介紹了Windows下使用virtualenv創(chuàng)建虛擬環(huán)境,本文通過(guò)兩種方式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10win2003服務(wù)器中創(chuàng)建Web網(wǎng)站虛擬目錄的圖文方法
Windows Server 2003系統(tǒng)中創(chuàng)建的Web網(wǎng)站,其中的所有內(nèi)容一般都存儲(chǔ)在主目錄中。但隨著網(wǎng)站內(nèi)容的不斷豐富,用戶需要把不同層次的內(nèi)容組織成網(wǎng)站主目錄下的子目錄。2010-10-10