.net mvc中session的鎖機制

今天遇到個奇怪的問題, 一個秒殺商品系統, 大量秒殺請求進來, 到了action竟然是單線程執行! 這樣產生的效果就是「這個系統好慢啊!!」。數據庫

但是我沒有加lock,爲何會變成單線程執行呢?session

 

找資料才知道, session有個鎖機制。性能

資料內容:測試

和數據庫的鎖同樣, 分共享鎖和排它鎖。spa

共享鎖佔用時,排它鎖必須等待,而另外一個共享鎖能夠同事訪問;線程

排它鎖佔用時,其餘全部鎖都必須等待。事務

兩個鎖的持續時間都是整個action走完才釋放。相似於Repeatable以上的事務隔離級別。io

 


而個人實際測試結果是:table

不管是讀仍是寫,都是排它鎖佔用!請求

也就是說,只要用到session,哪怕在BaseController裏僅僅讀取, 最終action也是線性執行的。

所以session是性能殺手。

相關文章
相關標籤/搜索