您好,登錄后才能下訂單哦!
<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)的參考圖片。
系統(tǒng)的硬件配置大體情況如下
系統(tǒng)在沒幾個用戶時的CPU使用情況如下
在測試環(huán)境下幾個不同的用戶登錄都不會出現(xiàn)這樣的情況,運(yùn)行情況一切良好,但是用戶數(shù)量龐大了后,就發(fā)生了無法正確讀取當(dāng)前Session的天地錯誤來了。
居然不同的用戶訪問,居然能生成相同的 SessionId,真是活見鬼了,而且?guī)讉€用戶之間亂串。
還是由于緩存倒是的錯誤,[OutputCache(Duration = 0, VaryByParam = "*")] 才對,但是我的搭檔寫了[OutputCache(Duration = 1, VaryByParam = "*")]
這里的1導(dǎo)致了緩存錯誤引起了上面的問題。
免責(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)容。