asp.net performance
生活随笔
收集整理的這篇文章主要介紹了
asp.net performance
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過系統配置來提高ASP.NET應用程序的穩定性
大家都知道,要實現一個24*7全天候運行的應用程序并不是一件容易的事。我的一個項目就曾經在暴力負荷下堅持了20多個小時后還是壯烈掛掉了。幸運的是,ASP.NET和IIS為我們提供了一些簡便的設施,使我們能夠輕松構建超級穩定的.Net應用程序。不過稍嫌不爽的是,Windows 2000(IIS6.0 以下版本) 和 Windows 2003(IIS6.0)系統下的配置方法不盡相同。??
?? 先說說windows 2000系統,熟悉ASP.NET的兄臺應當都知道 machine.config 這個文件吧,它保存在 %WindowPath%\Microsoft.Net\Framework\%.NetVersion%\CONFIG\ 目錄下。隨便用什么文本編輯器(當然最土的就屬 “記事本” 了)打開該文件,找到 <processModel ...> 這一節。ASP.NET就是根據這一節的設置,來控制ASP.NET服務進程(aspnet_wp.exe 或 w3wp.ext )的。我們的寫的ASP.NET 應用程序代碼就運行在這個進程空間內。如果你使用的是Framework 1.1 你會在這一節中看到n多個屬性,我們關心的是下面三個,等號后面是它們的缺省值:
??
?? timeout="Infinite"
??
?? idleTimeout="Infinite"
??
?? memoryLimit="60"
??
?? 在 Framework 2.0 下你看不到它們,但你可以手工把它們添加進去。
??
??
?? 我來翻譯一下這三個屬性的意思,在持續運行了 timeout 指定的時間后,重啟 ASP.NET服務進程,timeout 的缺省值為無窮大,你可以按“HH:MM:SS”的格式重新設置,如,timeout=24:00:00表示24小時后重啟; 如果在 idleTimeout 指定的時間內沒人的訪問,則重啟 ASP.NET服務進程,idleTimeout 的缺省值同樣為無窮大,設置方式如上;如果ASP.NET服務進程 使用的內存占系統總內存的百分比超過了 memoryLimit 指定的數量,則重啟 ASP.NET服務進程。
??
??
?? 明白了吧,通過這三個屬性的配合,就可以神不知,鬼不覺的重啟服務進程,從而使咱的應用程序生生不息的運行下去。我這樣說,細心的讀者可能已經發現問題了,當服務進程重啟時,客戶端的會話(Session)必然會丟失,用戶的操作也就被中斷了。怎么能做到“神不知,鬼不覺”呢?
??
?? 這個問題確實存在,不過可以通過如下措施將其影響減至最小,甚至完全消除:
??
?? 首先,我們可以把 idleTimeout 設為一個合理的值,通常我會將其置為會話(Session)超時設置的1.5-3倍。將timeout 置為程序能堅持的上限值,我通常將其置為24小時。這樣將迫使服務進程在空閑時重啟,由于這時不存在任何會話(Session),所以也就不可能中斷用戶的操作。這種設置在中小企業辦公環境中非常有效,因為下班后基本沒有人訪問。
??
?? 當然,上面的方法局限性很大,只能在特定場合起作用。如果在持續有人訪問,或者內存超限的情況下重啟,用戶的操作仍然會受到干擾。一個終極的解決辦法就是,將會話(Session)狀態保存在獨立的進程中。在ASP.Net上,這也可以通過簡單的配置實現。?
??
通過系統配置來提高ASP.NET應用程序的穩定性" 一文講到了Windows 2000 下( 本質上是在IIS5.0下 ,XP professional 也和2000一樣 )的配置方法, 今天我們來看看 Windows 2003 (IIS6.0) 下的配置方法。
??
?? IIS6.0默認的運行模式是進程隔離模式,它通過應用程序池來支持多個ASP.NET服務進程并行運行,前文講到的machine.config 文件中 <processModel ...> 這一節的大部分設置在這種運行模式下都會被忽略掉,我們前文提到的那三個屬性也在其中。不過不用擔心,IIS6.0下的配置更加簡單直觀。 具體步驟如下:
??
??
?? 2,在"進程池"文件夾中找到你的ASP.NET應用程序所在的服務進程,右擊并選擇“屬性”項,見下面二圖,其它就不用我多廢話了吧。
??
??
??
?? 除此之外,還有一種辦法可以讓 IIS6.0 和 IIS5.0 一樣,使用machine.config 文件中 <processModel ...> 這一節的設置來控制ASP.NET服務進程。(詳見上篇文章)
??
?? 同樣打開"IIS管理器",右擊"網站"文件夾,選取"屬性"項,如下圖,勾選 "以IIS5.0隔離模式運行Web服務":
??
??
?? 這樣,IIS6.0和IIS5.0的行為就完全一樣了,連ASP.NET服務進程的名稱都從"W3WP.exe"變成"ASPNET_WP.exe"了。不過,這種做法完全屬于開歷史的倒車,如果沒有什么不可告人的目的,堅決不予推薦。?
??
轉載于:https://www.cnblogs.com/hq2008/archive/2007/12/24/1012466.html
總結
以上是生活随笔為你收集整理的asp.net performance的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求职 .net程序员!
- 下一篇: 避免DateTimePicker闪烁的解