none
32位元Windows 2003的定址能力及應用程式可用記憶體問題! RRS feed

  • 問題

  • 請教各位先進!

    根據相關資料顯示在32位元的Windows Server 2003 Standard中,應用程式只能分配到2G~~

    那如果今天主機上面有4G的Ram,是不是代表在32位元架構下的IIS,一樣只能用到2G的記憶體呢?

    因為日前客戶端Web主機記憶體耗用接近2G時,就發生網頁顯示異常的情況而需要重新開機,所以才有此疑問,感謝...

    • 已編輯 DannyLee 2010年10月14日 上午 01:32
    2010年10月13日 上午 06:05

解答

  • Dear DannyLee

    Windows server 2003 x64的IIS預設是以 64 位元的模式執行,但是在對於程式的支援度也是X64架構

    但是環境是x64不代表開發的程式可以在這個環境下運作,因此您可能必須要先檢查一下,網站是否可以在x64上運作。

    您可以參考一下賴樞榮老師的經驗

    我的 Windows x64 經驗

     


    Jason的電腦健身房 沒有永遠的安全 沒有永遠的弱點 有牌的神經病
    2010年10月13日 上午 11:23
  • 你搞錯了整個觀念。

    在 Win32 下,32 bits 的程式每個程式都有獨自的虛擬機器,16 bits 的程式共用一個虛擬機器。

    在 Win64 下,64 bits 的程式每個程式都有獨自的虛擬機器,32 bits 的程式共用一個虛擬機器。

    每個虛擬機器,系統分配虛擬記憶體 2GB 、程式分配 2GB (可透過開機參數調整成 1GB/3GB)

    所以每個 32 bits 的程式都可以分配到虛擬 2GB 的記憶體。

    而在 Win2003 下,標準版支援實體記憶體 4GB ,但實際分配給各程式的,依情況而定,沒特別狀況時,通常應用程式總共吃掉的記憶體會比系統多,所以總分配在各應用程式上的比例肯定是可以突破 3GB ,但要看系統當時所需記憶體而定。例如三支程式每個吃掉 1GB 。

    IIS 看你開幾個應用程式架構,如果不調整開機參數下,一個 w3wp.exe 只能用到 2GB ,但是你可以同時執行 3 個 w3wp.exe ,讓他吃到 3 GB 以上。

    基本上 w3wp.exe 不應該持續使用記憶體超過 1GB ,這樣的話表示開發的邏輯有問題,應該踢回去重新改善。

    註:假設上站人數 10000 人,依預設值分配在 20 分鐘內,處理一個使用者要求最多 5 秒鐘,10000/(20*60/5) = 17 ,所以瞬間同時你只處理了 17 人的負載,1GB/17=60MB ,一個使用者 5 秒連續使用 60 MB ,根本是怪物寫的程式。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月13日 下午 03:45

所有回覆

  • Dear DannyLee

    在windows Server 2003 Standard SP1 所可以被分配的記憶體透過AWE取得4G的記憶體

    若不是SP1以上版本,這4G並不是實體記憶體,即使透過設定BOOT.INI去指定加入PAE及3GB參數

    去增加application的可用記憶體,可能效果也不大,不過您還是可以試試看!

     

    因此較建議在WEB主機端所使用消耗的記憶體

    則必須透過IIS應用程式集區去設定相關的回收條件或是針對程式的內容做優化!

     

     

     


    Jason的電腦健身房 沒有永遠的安全 沒有永遠的弱點 有牌的神經病
    2010年10月13日 上午 08:29
  • 感謝Jason的回覆!

    如果將Ram加到8G、並且更換為x64的Windows Server 2003,可以解決上述的問題嗎?感恩~~

    2010年10月13日 上午 09:05
  • Dear DannyLee

    若是提升至x64則問題點就會落在IIS上了,雖說可以定址到8TB,但相對的,程式的內容是否有辦法支援至這麼高,也是一個挑戰!

    建議您翻閱一下下面這個連結:

    http://technet.microsoft.com/zh-tw/library/bb735208.aspx


    Jason的電腦健身房 沒有永遠的安全 沒有永遠的弱點 有牌的神經病
    2010年10月13日 上午 09:16
  • Thanks Jason!

    客戶這邊的Ram只會加到8G,不會到8T~~

    另外請問更新為x64 OS後,IIS 限制的部份應該是要看「每一 32 位元處理器虛擬位址空間」,還是「每一 64 位元處理器虛擬位址空間」呢? 感謝...

    2010年10月13日 上午 09:29
  • Dear DannyLee

    Windows server 2003 x64的IIS預設是以 64 位元的模式執行,但是在對於程式的支援度也是X64架構

    但是環境是x64不代表開發的程式可以在這個環境下運作,因此您可能必須要先檢查一下,網站是否可以在x64上運作。

    您可以參考一下賴樞榮老師的經驗

    我的 Windows x64 經驗

     


    Jason的電腦健身房 沒有永遠的安全 沒有永遠的弱點 有牌的神經病
    2010年10月13日 上午 11:23
  • 你搞錯了整個觀念。

    在 Win32 下,32 bits 的程式每個程式都有獨自的虛擬機器,16 bits 的程式共用一個虛擬機器。

    在 Win64 下,64 bits 的程式每個程式都有獨自的虛擬機器,32 bits 的程式共用一個虛擬機器。

    每個虛擬機器,系統分配虛擬記憶體 2GB 、程式分配 2GB (可透過開機參數調整成 1GB/3GB)

    所以每個 32 bits 的程式都可以分配到虛擬 2GB 的記憶體。

    而在 Win2003 下,標準版支援實體記憶體 4GB ,但實際分配給各程式的,依情況而定,沒特別狀況時,通常應用程式總共吃掉的記憶體會比系統多,所以總分配在各應用程式上的比例肯定是可以突破 3GB ,但要看系統當時所需記憶體而定。例如三支程式每個吃掉 1GB 。

    IIS 看你開幾個應用程式架構,如果不調整開機參數下,一個 w3wp.exe 只能用到 2GB ,但是你可以同時執行 3 個 w3wp.exe ,讓他吃到 3 GB 以上。

    基本上 w3wp.exe 不應該持續使用記憶體超過 1GB ,這樣的話表示開發的邏輯有問題,應該踢回去重新改善。

    註:假設上站人數 10000 人,依預設值分配在 20 分鐘內,處理一個使用者要求最多 5 秒鐘,10000/(20*60/5) = 17 ,所以瞬間同時你只處理了 17 人的負載,1GB/17=60MB ,一個使用者 5 秒連續使用 60 MB ,根本是怪物寫的程式。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月13日 下午 03:45
  • 感謝各位精闢的回覆,在下獲益良多,Thanks :)
    2010年10月14日 上午 01:33
  • 看樣子廣告商來了~

    摳摳摳~

    來了來了~

    廣告商來了~


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年10月15日 下午 12:40