Application Pool中的處理序數目 > 1 + sessionState mode="InProc" = Session會掉

Application Pool中的處理序數目 > 1 + sessionState mode="InProc" = Session會掉

前言

我們有個系統上到客戶端那,不知為何Session會一直掉,原本以為是Client不允許用Cookie,但User又說沒有特別的設定,也說其他的AP不會有這種情形…

研究

起初一直以為是自己AP的問題,結果同事寫了簡單的程式去做Postback看Session會不會掉,結果時好時壞。嗯! 那可能是Application Pool中的處理序數目設定大於1吧! 結果一看,居然還設到10個。

image

工作者處理序的最大數目就是會起w3wp.exe的數目,所以設成2的話,網頁Run起來,就會起2個w3wp.exe,這種方式叫作Web Garden。

image 

那可想而知,如果SessionState Mode設成了InProc的話,那Session是放在那個w3wp.exe裡呢? 所以Session有時就會找不到。

但是如果是效能要好的話,是可以加大工作者處理序的最大數目哦! 因為1個w3wp.exe最多只能吃到800MB的Memory,如果要我的機器有8G RAM,裡面只放一個AP,那不就沒有發揮到它的功能嗎?

但是如果設定處理序大於1的話,SessionState Mode就要設成SQLServer或是StateServer,這樣就可以了呀!

所以AP在開發時,如果能不用Session就不要用,但是有些像使用者資訊等等都會放在Session之中,那建議把SessionState Mode設成StateServer哦!

要注意,Application Pool中的處理序數目 > 1 + sessionState mode="InProc" = Session會掉

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^