溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC

發(fā)布時間:2020-07-01 01:45:11 來源:網(wǎng)絡(luò) 閱讀:254 作者:jirigala 欄目:編程語言

                                 

WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC在大用戶量下Session會亂串的無法正確讀取數(shù)據(jù),導(dǎo)致系統(tǒng)無法正常使用

在MVC框架下寫了非常簡單的代碼,如下

<span>歡迎您, @Session["RealName"].ToString() [ @Session["Code"].ToString() ]</span>


在用戶數(shù)量不多時一切都運(yùn)行正常,在個人電腦上調(diào)試也沒問題,但是部署到服務(wù)器上,訪問的用戶數(shù)量非常龐大后,發(fā)現(xiàn)Session會亂的現(xiàn)象,我們也調(diào)試了程序的每個環(huán)節(jié),沒能發(fā)現(xiàn)什么大問題,甚至把靜態(tài)方法都進(jìn)行了改造,而且,只有登錄時會寫入Session,其他時候都只是讀取Session。

  最讓人郁悶的是程序在還沒超時的情況下Session就會開始亂起來,例如命名是A用戶登錄的,多刷新幾次后會變成B用戶,再多刷新幾次后又能變成A用戶,出現(xiàn)了一些不可預(yù)知的錯誤。

  系統(tǒng)里大概有4000多個賬戶,每個賬戶大概有20-30個人在使用,在測試環(huán)境下,用戶訪問數(shù)量還少時一切正常,但是大概有1萬個用戶同時使用系統(tǒng)時就會出現(xiàn)Session亂套的情況。

  最要命的是,讀取Session是微軟提供的方法,不知道問題出在哪里,下午調(diào)試了一下午還沒能發(fā)現(xiàn)問題的根源,這個系統(tǒng)全國有上萬人在隨時輸入數(shù)據(jù),而且已經(jīng)輸入了100多萬條數(shù)據(jù),接下來還會輸入蠻長一段時間。

  這么用戶變來變?nèi)タ刹皇莾簯?,MVC的Session讀取的方法難道連1萬個用戶的壓力也頂不???下面抓幾個系統(tǒng)相關(guān)的參考圖片。


 WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC

 WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC

 WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC

系統(tǒng)的硬件配置大體情況如下

 WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC

系統(tǒng)在沒幾個用戶時的CPU使用情況如下

 WindowsServer2003R2、IIS6下非常讓人郁悶的ASP.NET MVC


  在測試環(huán)境下幾個不同的用戶登錄都不會出現(xiàn)這樣的情況,運(yùn)行情況一切良好,但是用戶數(shù)量龐大了后,就發(fā)生了無法正確讀取當(dāng)前Session的天地錯誤來了。



居然不同的用戶訪問,居然能生成相同的 SessionId,真是活見鬼了,而且?guī)讉€用戶之間亂串。

kpldnxjnbmxrrh0edzy231l0
dvun2gonrxkv5cqd4x2qp5cl
0jqebcl5mv3fpstcbulp3map
34wziqicsez3clogagqolnpu

還是由于緩存倒是的錯誤,[OutputCache(Duration = 0, VaryByParam = "*")] 才對,但是我的搭檔寫了[OutputCache(Duration = 1, VaryByParam = "*")]

這里的1導(dǎo)致了緩存錯誤引起了上面的問題。




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI