西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → Win2003+IIS6.0搭載web服務(wù)器如何進行性能優(yōu)化

Win2003+IIS6.0搭載web服務(wù)器如何進行性能優(yōu)化

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/5/21 9:47:29字體大小:A-A+

作者:佚名點擊:358次評論:21次標(biāo)簽: 性能優(yōu)化

  • 類型:游戲其他大。4KB語言:中文 評分:5.0
  • 標(biāo)簽:
立即下載

問:好多asp.net程序,放在一臺服務(wù)器上,客戶端連接使用一段時間后,在服務(wù)器上打開任務(wù)管理器一看,發(fā)現(xiàn)有很多w3wp.exe,占用內(nèi)存很大,達到1g,請問為什么會這樣?有什么辦法可以避免這種情況呢?

答:這主要是你的ASP.NET 開發(fā)的程序有 內(nèi)存泄漏;對于 非托管資源,一定要注意 釋放。

問:我的具體情況是這樣的:

服務(wù)器配置 至強2.8G 內(nèi)存512M SCSI硬盤 2塊 (軟鏡像)

系統(tǒng) windows 2003

現(xiàn)在掛了一個asp.net開發(fā)的網(wǎng)站 訪問量不大 但是出現(xiàn)一個 題目就是

每當(dāng)服務(wù)器運行2-3天后 訪問網(wǎng)站就特別慢 重啟動服務(wù)器后就 正常了

查看進程使用內(nèi)存的情況 發(fā)現(xiàn)w3wp.exe 和sqlservr.exe 進程 占用內(nèi)存

相當(dāng)大 達到了170多M( 每個) 物理可用內(nèi)存幾乎用光

(服務(wù)器重啟動時 占用的內(nèi)存很小才40多M 每個)

以前網(wǎng)站掛在一個虛擬機數(shù)據(jù)庫是分開掛的 從沒出現(xiàn)這種情況

后來 原版移植到新服務(wù)器上就 出現(xiàn)這樣的題目~~

還個一題目就是 我在SQL企業(yè)管理器中查看SQL進程 發(fā)現(xiàn)有很多是 。net 引起的進程是sleeping 但是卻占用了內(nèi)存~ 無法釋放

搞了很久了 一直都沒解決,求救~~請高手 指教~~ 萬分感謝~~~~~

答:IIS服務(wù)管理器----》應(yīng)用程序池----》添加你的應(yīng)用,并設(shè)置最大內(nèi)存,當(dāng)程序達到最大內(nèi)存后其會自動重啟。

我的題目跟你一樣,不過我的內(nèi)存是2G的,訪問量比較高,一般是差未幾運行24小時后就得重啟,內(nèi)存沒耗完,W3WP進程占到一百***十兆,SQL占了二百多兆時,就得重啟,不然整個站點就當(dāng)在那邊....55555555,搞了快半個月了還是不行,痛苦啊

w3wp.exe 就是你的ASP.NET應(yīng)用宿主,假如你使用了大量的Session、Cache等資源,并且Session超市時間很長,那么內(nèi)存占用量就比較大。應(yīng)用池是為增加性能而設(shè)的一個特性,但是也消耗很大的內(nèi)存。另外關(guān)掉Windows Server 2003里的大多數(shù)Service(那個不用都可以關(guān)掉),也可以節(jié)省一部分內(nèi)存

1.懷疑在程序中應(yīng)用的CACHE,

2.CACHE中有大量的數(shù)據(jù)

3.頻繁刷新CACHE

4.沒有設(shè)計好CACHE的方式

你的問題我以前也遇見過,我以前是用的Session,后我全部改成cook之后就好多了,應(yīng)該是你的Session或是你的CACHE有問題(CACHE不太懂,但多多少應(yīng)該是有的)

跟蹤下SQL的調(diào)用記錄,在每次往CACHE或SESSION寫入大量數(shù)據(jù)時記錄一下時間,看是否太過頻繁

1.在win2003里asp.net的進程就是w3wp.exe

2.512M 內(nèi)存?zhèn)人用是夠用了,但是放在服務(wù)器上就有點不夠用了,尤其是win2003 + asp.net +sql server 。尤其是sql server 他是很吃內(nèi)存的,假如不控制的話,他會占光所有的物理內(nèi)存(只剩下幾十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。

3.優(yōu)化asp.net程序,就向樓上的說的那樣,少用或不用session cache application之類的東西,再有就是是不是有翻頁的地方,翻頁處理不好也是會占很多內(nèi)存的。

4.限制sql的內(nèi)存。企業(yè)管理器——SQL的屬性(一般是local)——“內(nèi)存”標(biāo)簽

在這里看內(nèi)存的設(shè)置,把最大值改成100M吧。

第四條是最快的方法,可以試一試。

我的一個自開發(fā)OA系統(tǒng)也存在這樣的問題。

總結(jié)上面,大概原因是因為 session 和 cache 的不合理使用造成的。

我的應(yīng)用程序中,確實用了很多的Session 和 Cache,

在 MSDN 中找到 了 “動態(tài)內(nèi)存分配”這一篇,今天就試看看,是否有效。

?从薪(jīng)驗的朋友多給些信息,大家也好總結(jié)下出現(xiàn)類似錯誤的原因,謝謝!!

不知道你是什么網(wǎng)站。按理說是不會占用這么大的。如上你用了cache存放了超額的內(nèi)容。當(dāng)然。象session這種是不太可能占用這么大的了,或用了 application 類似的一些有超長時間或永久保持性的對象來保存大量數(shù)據(jù)。如利用單例保存數(shù)據(jù)這些都有可能造成使用大量的內(nèi)存。

建義2003系統(tǒng)安裝至少1G內(nèi)存。

w3wp.exe是2003下的一個iis進程,至于樓主說的sql占用內(nèi)存,那有可能是因為你的sql沒有設(shè)置占用內(nèi)存上限

打造基于IIS 6.0的站點是很多企業(yè)的首選,但是IIS相對于其他Web平臺不但對硬件的要求比較高,而且其性能不夠盡如人意。如果沒有強勁的硬件平臺,用IIS搭建的Web站點確實有些老牛破車的味道。另外,IIS保守的默認(rèn)設(shè)置讓這一切雪上加霜。如何在現(xiàn)有的硬件平臺上打造快捷的Web服務(wù)器呢?那就從IIS優(yōu)化,為Web減負(fù)開始。
  1、禁止多余的Web服務(wù)擴展

  IIS6.0支持多種服務(wù)擴展,有些管理員偷懶或者不求甚解,擔(dān)心Web運行中出現(xiàn)解析錯誤,索性在建站時開啟了所有的Web服務(wù)擴展。殊不知,這其中的有些擴展比如“所有未知CGI擴展”、“在服務(wù)器端的包含文件”等是Web運行中根本用不到的,況且還占用IIS資源影響性能拖垮Web,甚至某些擴展存在漏洞容易被攻擊者利用。因此,科學(xué)的原則是,用到什么擴展就啟用什么擴展。

  如果企業(yè)站點是靜態(tài)頁面,那什么擴展都不要開啟。不過現(xiàn)在的企業(yè)站點都是交互的動態(tài)頁面比如asp、php、jsp等。如果是asp頁面,那只需開啟“Active Server Pages”即可。對于php、jsp等動態(tài)頁面IIS6.0默認(rèn)是不支持的需要進行安裝相應(yīng)組件實現(xiàn)對這些擴展的支持。不過,此時用不到的擴展完全可以禁用。

  禁止Web服務(wù)擴展的操作非常簡單,打開“IIS管理器”,在左窗格中點擊“Web服務(wù)擴展”,在右側(cè)選擇相應(yīng)的擴展,然后點擊“禁用”即可。(圖1)

 

2、刪除不必要的IIS擴展名映射

  IIS默認(rèn)支持.asp、.cdx等8種擴展名的映射,這其中除了.asp之外其他的擴展幾乎用不到。這些用不著的擴展會加重web服務(wù)器的負(fù)擔(dān),而且?guī)硪欢ǖ陌踩[患。比如.asa,.cer等擴展名,就可以被攻擊者利用來獲得webshell。因為一般的asp系統(tǒng)都會限制asp文件的上傳,但如果沒有限制.asa或者.cer等擴展名,攻擊者就可以更改文件后綴突破上傳限制,運行.asa或者.cer的文件獲得webshell。(圖 2)

 

刪除IIS擴展名的操作是:打開IIS管理器,右鍵單擊“默認(rèn)Web站點”選擇“屬性”,點擊“主目錄”選項卡,然后點擊“配置”打開應(yīng)用程序窗口,最后根據(jù)自己的需要選擇不必要的應(yīng)用程序映射比如.shtml, .shtm, .stm等,然后點擊“刪除”即可。(圖3)

 

3、取消訪問記錄

  IIS6.0默認(rèn)開啟對于web的訪問記錄。當(dāng)開啟記錄功能后,IIS會事無巨細(xì)地忠實記錄所有的web訪問記錄。這些記錄文件的內(nèi)容是非常龐雜的,比如訪問時間、客戶端IP、從哪個鏈接訪問、 Cookies等,另外還包括 Method(方法), UserAgent(用戶代理)等。這些記錄不但占用大量的磁盤空間還大大地影響了web服務(wù)器的性能。有人做過評測,停止訪問記錄可以提升5%到8%的 web性能。而且這些記錄對于一般用戶,特別是中小型的Web站點沒有什么用途,簡直太耗費系統(tǒng)性能了,因此建議關(guān)閉它。

  取消訪問記錄的操作是:打開IIS管理器,定位到具體的web站點,右鍵點擊選擇“屬性”,在“主目錄”選項卡下取消對“記錄訪問”的勾選即可。(圖4)

 

4、對訪問流量進行限制

  默認(rèn)情況下IIS 6.0對于訪問量是沒有限制的,如果并發(fā)連接過大超過了Web的負(fù)載輕則發(fā)生網(wǎng)絡(luò)擁塞,重則導(dǎo)致服務(wù)器宕機。因此需要對用戶的訪問進行限制,控制Web訪問的流量。

  打開“Internet信息服務(wù)”管理器,在其窗口右側(cè)點擊主機名前面的“+”號,依次定位到某個Web站點上。選中該Web站點右鍵單擊選擇 “屬性”,在打開的屬性設(shè)置窗口中選中“性能”標(biāo)簽,將“啟用帶寬限制”復(fù)選框選中,在隨后被激活的“最大網(wǎng)絡(luò)使用”設(shè)置框中,指定你的網(wǎng)絡(luò)站點帶寬的具體數(shù)值。大家可以根據(jù)服務(wù)器的性能及其訪問量綜合考慮繼續(xù)設(shè)置。對于一般的企業(yè)站點將帶寬流量設(shè)置為1500kb/s就差不多了。同時在“網(wǎng)站連接”下可以進行連接限制的設(shè)置,大家可以根據(jù)情況設(shè)置一個數(shù)值。完成以上設(shè)置后,IIS就只能使用其被授予的資源進行Web服務(wù),杜絕了異常情況造成的服務(wù)器過載,為Web減負(fù)。(圖5)

 

5、讓W(xué)eb負(fù)載自由伸縮

  默認(rèn)情況下IIS是全負(fù)荷地為Web提供服務(wù)的,這在一定程度上加重了Web負(fù)擔(dān)。如何能夠自動地根據(jù)負(fù)載變化自動調(diào)節(jié)工作進程呢?

  利用IIS 6.0的Web園,我們只需指定用于某個應(yīng)用程序池的工作進程的數(shù)量就可以了實現(xiàn)各個Web站點之間的隔離。具體的配置步驟是:在“Internet信息服務(wù)”管理器中打開應(yīng)用程序池的“屬性”對話框,轉(zhuǎn)到“性能”頁,在“Web園”下面的“最大工作進程數(shù)”輸入框中輸入進程數(shù)量。當(dāng)服務(wù)器的負(fù)載較小,不需要額外的工作進程時,IIS 6.0在一定的時間后(默認(rèn)20分鐘,可配置)自動縮減實際的工作進程數(shù)量;如果負(fù)載變大,需要額外的工作進程,IIS 6.0再次增加工作進程數(shù)量。另外,還可以“啟用CUP監(jiān)視”,設(shè)置“最大CPU使用率”,“刷新CUP使用率值”以及“CPU使用率超過最大使用率是執(zhí)行的操作”,這些設(shè)置可以根據(jù)需要進行設(shè)置。當(dāng)一切設(shè)置完成后這一切就交給IIS自動進行,不需要管理員干預(yù)。 (圖6)

  

6、配置應(yīng)用呈現(xiàn)池

  IIS可以支持多個Web服務(wù),特別是虛擬主機一臺服務(wù)器上有非常多的Web站點。如何才能做到各個站點之間相互獨立,不因某些Web站點出現(xiàn)故障而影響其他站點呢?為不同工作進程指定應(yīng)用程序池是個很好的解決辦法。

  (1)、創(chuàng)建

  打開“IIS 管理器”中,展開本地計算機,右鍵單擊“應(yīng)用程序池”,選擇“新建→應(yīng)用程序池”。在“應(yīng)用程序池名稱”框中,輸入新的應(yīng)用程序池名稱。如果點選選“將現(xiàn)有應(yīng)用程序池作為模板”,可以在“應(yīng)用程序池名稱”下來列表中選擇相應(yīng)的應(yīng)用程序池,最后單擊“確定”即可。 (圖7)

(2)、指派

  在“IIS 管理器中”,右鍵單擊你要為其指派應(yīng)用程序池的站點然后單擊“屬性”。在該站點的屬性面板中“主目錄”選項卡,在“應(yīng)用程序池”下拉列表中選擇剛才創(chuàng)建的應(yīng)用程序池即可。如果所有的選項為灰色,單擊“創(chuàng)建”按鈕就可以輸入“應(yīng)用程序名”,然后在“應(yīng)用程序池”列表框中,選擇并指派網(wǎng)站的應(yīng)用程序池了。(圖 8)

  

(3)、回收

  利用“回收”功能,可是設(shè)置如何恢復(fù)系統(tǒng)資源進行IIS資源使用的靈活定制。打開“IIS 管理控制臺”,單擊“+”號依次“展開本地計算機→應(yīng)用程序池”。選擇你要回收的應(yīng)用程序池右鍵單擊選擇“屬性”,出現(xiàn)應(yīng)用程序池的屬性對話框,單擊“回收”選項卡在其下可以設(shè)置“進程回收”、“內(nèi)存回收”等,所有這些設(shè)置大家根據(jù)實際需要進行設(shè)置。(圖9)

  

總結(jié):通過上述IIS優(yōu)化措施,Web服務(wù)器就能輕裝上陣其性能將會有較大的提升。當(dāng)然,要從根本上改善Web性能,僅僅進行軟設(shè)置是不夠的。另外,還需要進行硬件改造,軟硬結(jié)合才是最完美的解決方案。

管理互聯(lián)網(wǎng)信息服務(wù)器(Internet Information Server,IIS)大家都知道,它是一個既簡單而又麻煩的東西,簡單的是安裝它幾乎不需要費什么腦筋,選擇一下路徑,然后一路按“下一步”就可以完成;配置也比較簡單,只要有一定的NT和網(wǎng)絡(luò)知識,照著說明書就可以架設(shè)一個像模像樣的Web站點出來。然而管理IIS卻沒有想像的那樣簡單。使用一段時間以后,管理員往往會遇上服務(wù)器性能不良的情況。這時候,IIS的性能優(yōu)化,就尤為重要了。

  導(dǎo)致IIS服務(wù)性能不良的原因有兩個方面。一個是人為的,也就是說管理員在安裝、配置IIS的時候沒有進行優(yōu)化或者配置錯誤。另一個則是客觀上的,隨著運行的服務(wù)種類,以及訪問人數(shù)的增加,服務(wù)器原有的硬件配置已不能滿足要求了,這就需要提高硬件配置。

  在服務(wù)器配置上優(yōu)化IIS性能

  1.IIS高速緩存是對IIS進行優(yōu)化時要考慮的最重要的項目之一。服務(wù)器保留了一部分內(nèi)存空間用作IIS高速緩存,為將來的請求存儲對象,這樣IIS就可從高速緩存中檢索對象而不用從硬盤中檢索。

  調(diào)整IIS高速緩存的容量需要修改注冊表,表項如下:

  \HKEY_LOCAL_MACHINE
  \System
  \CurrentControlSet
  \Services
  \InetInfo
  \Parameters
  \MemoryCacheSize
  MemoryCacheSize的范圍是從0道4GB,缺省值為3072000(3MB)。

  IIS通過高速緩存系統(tǒng)句柄、目錄列表以及其他常用數(shù)據(jù)的值來提高系統(tǒng)的性能。這個參數(shù)指明了分配給高速緩存的內(nèi)存大小。如果該值為0,那就意味著 “不進行任何高速緩存”。在這種情況下系統(tǒng)的性能可能會降低。如果你的服務(wù)器網(wǎng)絡(luò)通訊繁忙,并且有足夠的內(nèi)存空間,可以考慮增大該值。必須注意的是修改注冊表后,需要重新啟動才能使新值生效。

  2.使IIS使用處理器時間最長。服務(wù)器的CPU處理器能力總是有限的。哪一個應(yīng)用程序占用處理器的時間最長,誰的性能就能得到最大的提高。

 。1)在NT的控制面板中,雙擊系統(tǒng)圖標(biāo)。
 。2)單擊性能標(biāo)簽。
 。3)在應(yīng)用程序性能下將游標(biāo)拖到None的位置,這樣就可以使所有正在運行的服務(wù),包括IIS,使用處理器的時間達到最大值。

  3.服務(wù)器屬性設(shè)置。在服務(wù)器屬性里有一項可以使網(wǎng)絡(luò)應(yīng)用程序的總處理能力最大的選項,你當(dāng)然應(yīng)該選擇它。

  (1)在桌面上右鍵單擊網(wǎng)絡(luò)鄰居圖標(biāo),然后選擇屬性選項。
  (2)單擊“服務(wù)標(biāo)簽”。
  (3)單擊“服務(wù)器”,然后按“屬性”。
  (4)選擇最大化網(wǎng)絡(luò)應(yīng)用程序的總處理能力。然后單擊“OK!

  提高硬件配置來優(yōu)化IIS性能

  當(dāng)進行了上述的優(yōu)化配置,IIS的性能仍然沒有什么明顯改善的話,也許你應(yīng)該考慮提高服務(wù)器配置了。如升級處理器,增加硬盤,升級網(wǎng)卡,增加內(nèi)存等。

  優(yōu)化IIS的注意事項

  為了避免以后的頭疼,在安裝IIS之時就應(yīng)該注意到IIS的優(yōu)化。比如:

  1.為了提高性能和節(jié)約資源,應(yīng)該只運行需要的協(xié)議。這一點很多管理員都沒有注意,筆者曾見到在一臺只作Web服務(wù)的機器上同時安裝有NetBEUI、Tcp/IP和IPX協(xié)議。顯然這是不合理的。

  2.應(yīng)該將IIS服務(wù)器,設(shè)置為獨立的服務(wù)器,不要讓服務(wù)器去承受域控制器要求的額外負(fù)荷。試想:服務(wù)器一邊在響應(yīng)用戶的登錄,一邊還要提供IIS服務(wù),性能能不下降嗎?

  3.可以把NT服務(wù)器的頁交換文件分布到多個物理磁盤上,注意是多個“物理磁盤”,分布在多個分區(qū)上是無效的。另外,不要將頁交換文件放在與WIndows NT引導(dǎo)區(qū)相同的分區(qū)中。

  4.使用磁盤鏡像或磁盤帶區(qū)集可以提高磁盤的讀取性能。

  5.關(guān)于日志的記錄,應(yīng)該采用文件記錄而不是記錄到ODBC數(shù)據(jù)源。此外,還可以在記錄期間增加用來記錄日志的內(nèi)存緩沖區(qū)的容量來減少磁盤的活動。該緩沖區(qū)的缺省容量值為64KB。

  6.最好把所有的數(shù)據(jù)都儲存在一個單獨的分區(qū)里。然后定期運行磁盤碎片整理程序以保證在存儲Web服務(wù)器數(shù)據(jù)的分區(qū)中沒有碎片。使用NTFS有助于減少碎片。筆者推薦使用Norton的Speeddisk,可以很快地整理NTFS分區(qū)。

  7.雖然SSL可以提供相當(dāng)可靠的加密傳輸。但是所需的額外開銷會導(dǎo)致IIS服務(wù)器速度下降,尤其是在處理大型文件的時候。所以應(yīng)該只對確實需要保護的目錄進行SSL加密。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(21)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)