我們有一個運行我們的應用程序的IIS 6服務器的Web場。
我們的會話存儲在Sql Server 2005上的不同服務器上。
每隔幾個月,我們都會在其中一個Web服務器日誌中發現此錯誤: 「Timeout expired。超時時間在從池中獲取連接之前已過去,這可能是由於所有使用的池連接正在使用和最大池大小達到」Asp.Net中Session的問題
堆棧跟蹤: System.Data.ProviderBase.DbConnectionInternal 的getConnection(System.Data.Common.DbConnection) 在 System.Data.ProviderBase.DbConnectionFactory.GetConnnection(的DbConnection 擁有連接)在 System.Data.ProviderBase。 DbConnectionClosed.OpenConnection(的DbConnection outerConnection,DbConnectionFactory connectionFactory的)在 System.Data.SqlClient.SqlConnection.Open() 在 Systme.Web.SessionState.SqlSessionStateStore.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo)
當這個異常被拋出時,服務器開始表現得很奇怪 - 有些用戶可以訪問應用程序,有些則不會。
到目前爲止,我們發現的唯一解決方案是重置該服務器上的IIS。
我也應該mantion服務器不appered被超載和preformence是非常正常的這種情況以前..
任何想法?
除非您有一個非常具體的使用SQL的理由,否則您可以使用不帶SQL的公共狀態服務器,這會顯着提高速度。 – 2011-05-24 06:42:03
不幸的是,常見的狀態服務器根本不會爲大量用戶剪切它,並且只能在Web場中使用粘性會話時才能使用。 – YsA 2011-05-24 07:51:49
在我以前的工作中,我們有超過六百萬用戶,並且在多個Web和狀態服務器上使用沒有SQL的狀態服務器沒有問題。 – 2011-05-25 06:08:12