2012-12-24 89 views
3

我有我需要的網絡農場的ASP.NET應用程序的問題,但只是登錄到我的應用程序需要在約15秒ASP.NET SQL Server會話狀態非常慢

我做了一點試驗在哪裏創建了我的應用程序的非Web養殖版本,然後使用INPROC會話狀態,並且登錄時間是立即的。在這個測試實例中,我在同一臺機器上運行SQL Express。

我知道SQL服務器上的會話狀態比較慢,但是它沒有辦法讓它變慢。有關如何追蹤此問題的任何建議?

這是我的會話狀態:

<sessionState mode="SQLServer" timeout="60" sqlConnectionString="Data Source=localhost;Integrated Security=SSPI;" sqlCommandTimeout="30" cookieless="false" useHostingIdentity="False" regenerateExpiredSessionId="True" /> 

我已經使用的用戶名密碼,以及集成的安全都嘗試。

+0

查看[這個問題]中的比較(http://stackoverflow.com/questions/1447175/sqlserver-vs-stateserver-for-asp-net-session-state-performance) – DOK

+0

你可以發佈你的網頁。你配置連接字符串的配置部分? –

+0

@DOK我看過那個。是的,我知道SQL服務器應該比較慢,但我們正在慢幾個數量級。 – WhiskerBiscuit

回答

0

關係數據庫是原子(ACID),所以當每個人都擊中同一個表時(ASPStateTempSessions),性能相當差。

我們遇到了與使用SessionState模式相同的問題,我們在負載均衡器上啓動ASPNet狀態服務並使用它。更好的吞吐量。

<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" timeout="60" /> 
0

你的問題跨越廣域 -

  1. 代碼:你是推到會話中什麼東西是相當重要的。如果你正在存儲大塊等,每當會話數據被存儲並從數據庫中讀取時,序列化/反序列化就會發生。你能解析存儲的數據並嘗試找出平均大小嗎?我已經看到商業應用程序在sql服務器上存儲1mb到2mb的數據,並連接了數千個用戶,但是底層硬件足以支持吞吐量。
  2. 基礎架構:您的機器上有多少內存?你可以嘗試在你的aspstate數據庫上運行sql trace來查看有多少連接進入以及執行查詢需要多長時間?問題可能不在數據庫端,它可能是您的應用程序在存儲會話信息時嘗試做某些事情。

SQL Server會話存儲不是這麼慢,在我的機器上運行8gig ram和asp.net應用程序時,通過visual studio(IIS Express)運行只需一秒鐘即可連接和啓動應用程序。

+0

嘗試實施redis緩存:https://redis.io/ – captainprice