2015-07-21 66 views
0

我正在使用BizTalk WCF自定義適配器在SQL Azure數據庫上運行存儲過程。我有大約20K條記錄作爲複合操作進行處理。我們在40-50分鐘後,用R2的Windows Server 2012的Biztalk WCF自定義適配器給出超時錯誤

我收到以下錯誤上的BizTalk 2013:

發送到適配器「WCF的自定義」發送端口上 消息「Swire.BizTalk .M3.Send.PushAssets.Local「與URI 」mssql://xngoo0zsw2.database.windows.net//overvuuat_20150720?「是 暫停。錯誤詳細信息: Microsoft.ServiceModel.Channels.Common.InvalidUriException:超時 過期。在從池中獲取連接 之前已經超時。這可能是因爲所有池式連接 都在使用中,並且達到了最大池大小。 ---> System.InvalidOperationException:超時過期。在從池中獲取連接之前已經超時了 。這可能發生了 ,因爲所有池連接都在使用中,並且達到了最大池大小 。在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(的DbConnection owningConnection,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1重試,DbConnectionOptions USEROPTIONS)處System.Data.SqlClient.SqlConnection System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 重試) 。開()在 Microsoft.Adapters.Sql.SqlAdapterConnection.OpenConnection()--- 內部異常堆棧跟蹤的結尾---

服務器堆棧跟蹤:在 System.Runtime.AsyncResult.End [TAsyncResult] (IAsyncResult結果)
at System.Servic eModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 結果)在 System.ServiceModel.Channels.ServiceChannel.EndCall(字符串動作, 對象[]奏,IAsyncResult的結果)在 System.ServiceModel.Channels.ServiceChannel.EndRequest( IAsyncResult的 結果)在

異常重新拋出[0]:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即時聊天 reqMsg,即時聊天retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke( MessageData & msgData,Int32類型)在 System.ServiceModel.Channels.IRequestChanne l.EndRequest(IAsyncResult的 結果)在 Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult的 結果)的MessageId:{9034380A-E116-4694-BD70-F9933BF37BD3} 實例id:{91B6E1AA-32AD -48D9-A18A-F9BF20529764}

以下是該發送端口配置:

enter image description here

我增加了超時從0點50分00秒至05:00:00,但沒有改變結果。仍然有相同的錯誤。

我運行SP_WHO2以獲取正在運行/排隊的連接的列表。錯誤發生時有超過100多個連接。其中一個查詢「Select Into」處於掛起模式,並顯示爲從SSMS運行時。但我們沒有這樣的查詢,我們從來沒有直接從SSMS運行任何查詢。

請提出解決方法。

+0

你能向我們展示一般選項卡的屏幕截圖嗎? – mahieddine

回答

1

看起來您正在擊中maxConnectionPoolSize爲100,並且在此情況下增加超時將無濟於事。您可以使用非集中連接,但在進行之前,請查看爲何有100多個數據庫連接。這可能是因爲數據庫上的性能問題(可能需要擴展)/應用程序問題(鎖定在表中並阻止其他查詢或連接未關閉,因此它們都不會返回到池)。

對於性能問題,請查詢sys.resource_stats以查看您的數據庫資源利用率是否達到峯值。你也可以使用sys.dm_Exec_Requests和sys.dm_tran_locks來查看其他連接正在做什麼。我相信當你完成使用它們時,你正在關閉應用程序中的連接(否則它們不會返回到遊戲池)