您好,登錄后才能下訂單哦!
<span>歡迎您, @Session["RealName"].ToString() [ @Session["Code"].ToString() ]</span>
在用戶數量不多時一切都運行正常,在個人電腦上調試也沒問題,但是部署到服務器上,訪問的用戶數量非常龐大后,發現Session會亂的現象,我們也調試了程序的每個環節,沒能發現什么大問題,甚至把靜態方法都進行了改造,而且,只有登錄時會寫入Session,其他時候都只是讀取Session。
最讓人郁悶的是程序在還沒超時的情況下Session就會開始亂起來,例如命名是A用戶登錄的,多刷新幾次后會變成B用戶,再多刷新幾次后又能變成A用戶,出現了一些不可預知的錯誤。
系統里大概有4000多個賬戶,每個賬戶大概有20-30個人在使用,在測試環境下,用戶訪問數量還少時一切正常,但是大概有1萬個用戶同時使用系統時就會出現Session亂套的情況。
最要命的是,讀取Session是微軟提供的方法,不知道問題出在哪里,下午調試了一下午還沒能發現問題的根源,這個系統全國有上萬人在隨時輸入數據,而且已經輸入了100多萬條數據,接下來還會輸入蠻長一段時間。
這么用戶變來變去可不是兒戲,MVC的Session讀取的方法難道連1萬個用戶的壓力也頂不住?下面抓幾個系統相關的參考圖片。
系統的硬件配置大體情況如下
系統在沒幾個用戶時的CPU使用情況如下
在測試環境下幾個不同的用戶登錄都不會出現這樣的情況,運行情況一切良好,但是用戶數量龐大了后,就發生了無法正確讀取當前Session的天地錯誤來了。
居然不同的用戶訪問,居然能生成相同的 SessionId,真是活見鬼了,而且幾個用戶之間亂串。
還是由于緩存倒是的錯誤,[OutputCache(Duration = 0, VaryByParam = "*")] 才對,但是我的搭檔寫了[OutputCache(Duration = 1, VaryByParam = "*")]
這里的1導致了緩存錯誤引起了上面的問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。