none
關於asp.net占記憶體問題? RRS feed

  • 問題

  • 使用ASP.NET 2.0寫購物網站系統

    小弟我在寫web時並沒有使用太多的session、Cache

    Session內也沒有放DataSet等大型物件,可是查看w3wp.exe時,只要程式一運作執行幾個頁面後,

    記憶高達四、五十 MB,有時爆到七、八十,請問小弟應從那方面下手找出問題,或有何工具可以看出

    是什麼占記憶體

    2006年12月25日 上午 04:06

解答

  • 40 ~ 50 MB 還好啊... 還要看你總系統記憶體量,w3wp.exe 會拿固定比率來做快取,所以系統記憶體越大時,w3wp.exe 就會一直吃... 比如說當搜尋引擎在掃的時候,就會吃更兇,大概就會吃到系統記憶體的 10% ,SQL Server 也是這樣,所以記憶體破 2 GB 時,最好關虛擬記憶體~

    起跳載入大概就是 25 mb 左右,這是載入 .Net framework 的大小,然後再載入你的網站及 dll ,大概這時吃掉 30 mb ,之後就看如何使用你的記憶體了。

    所以 40 ~ 50 mb 還好。

    瞬間爆量通常要看你如何使用資料庫,比如說沒做最小查詢,而是先傳回來再做過濾,當然要開比較大的空間來存放暫存值。

    線上手冊有一章是最佳化,有一些基本觀念來說明如何最節省資源。

    2006年12月25日 上午 10:02

所有回覆

  • 40 ~ 50 MB 還好啊... 還要看你總系統記憶體量,w3wp.exe 會拿固定比率來做快取,所以系統記憶體越大時,w3wp.exe 就會一直吃... 比如說當搜尋引擎在掃的時候,就會吃更兇,大概就會吃到系統記憶體的 10% ,SQL Server 也是這樣,所以記憶體破 2 GB 時,最好關虛擬記憶體~

    起跳載入大概就是 25 mb 左右,這是載入 .Net framework 的大小,然後再載入你的網站及 dll ,大概這時吃掉 30 mb ,之後就看如何使用你的記憶體了。

    所以 40 ~ 50 mb 還好。

    瞬間爆量通常要看你如何使用資料庫,比如說沒做最小查詢,而是先傳回來再做過濾,當然要開比較大的空間來存放暫存值。

    線上手冊有一章是最佳化,有一些基本觀念來說明如何最節省資源。

    2006年12月25日 上午 10:02
  • 由於會在iis上放三、四十個站,所以不允許資源吃這麼大

    小弟會去看看線上手冊的,謝謝璉璉的回答

    2006年12月25日 上午 10:12
  • 建議你最好不要這麼做(在同一台 server 放一堆網站),除非你的 Server 電腦夠力到不行(CPU Xeon 以上,RAM 16GB 以上),或者每個網站的流量超小(會同時使用的使用者少於 10 個)。

    不然就算把記憶體壓到只有最基本的要求一樣會不夠。
    會影響記憶體的使用,程式的寫法也多少有點關係,不是只有 .NET Framework 的因素而已。

    算一下每一個使用者會耗用到的資源數,就知道在一個 40 個 site 的網站,要多少記憶體才能服務至少 1,000 個同時使用的使用者。

    2006年12月25日 上午 10:21
    版主
  • 起跳的部份,只要在同一個應用程式集區,是共用的,比如說網站開發者,可能有不同專案,會有很多個,通常會設定成不同應用程式,但是使用相同應用程式集區,則一個應用程式只會載入一次 .Net framework 。

    比如說,.Net 1.1/2.0 各開一個,就只會有兩個 w3wp.exe 。

    註:共用應用程式集區時,若造成 w3wp.exe 重新啟動,相同應用程式集區下的會跟著一起死~

    2006年12月25日 上午 11:44