【问题标题】:Biztalk WCF-Custom Adapter gives time out errorBiztalk WCF-自定义适配器给出超时错误
【发布时间】:2015-10-10 19:00:38
【问题描述】:

我正在使用 BizTalk WCF 自定义适配器在 SQL Azure 数据库上运行存储过程。我有大约 20k 条记录要作为复合操作进行处理。我们在 Windows Server 2012 上使用 BizTalk 2013 R2。

40-50 分钟后出现以下错误:

在发送端口上发送到适配器“WCF-Custom”的消息 带有 URI 的“Swire.BizTalk.M3.Send.PushAssets.Local” “mssql://xngoo0zsw2.database.windows.net//overvuuat_20150720?”是 暂停。错误详情: Microsoft.ServiceModel.Channels.Common.InvalidUriException:超时 已到期。在获得连接之前经过的超时时间 从游泳池。这可能是因为所有池连接 正在使用中并且已达到最大池大小。 ---> System.InvalidOperationException:超时已过期。超时时间 在从池中获取连接之前经过。这可能有 发生是因为所有池连接都在使用中并且最大池大小 达到了。在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 重试,DbConnectionOptions userOptions)在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 重试)在 System.Data.SqlClient.SqlConnection.Open() 在 Microsoft.Adapters.Sql.SqlAdapterConnection.OpenConnection() --- 内部异常堆栈跟踪结束---

服务器堆栈跟踪:在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果)
在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果)在 System.ServiceModel.Channels.ServiceChannel.EndCall(字符串动作, Object[] 输出,IAsyncResult 结果)在 System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult 结果)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData,Int32 类型)在 System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult 结果)在 Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult 结果)MessageId:{9034380A-E116-4694-BD70-F9933BF37BD3} 实例 ID:{91B6E1AA-32AD-48D9-A18A-F9BF20529764}

以下是该发送端口的配置:

我将超时时间从 00:50:00 增加到 05:00:00,但结果没有变化。仍然出现同样的错误。

我运行SP_WHO2 以获取正在运行/排队的连接列表。出现错误时有超过 100 个连接。查询“Select Into”之一处于挂起模式,并在从 SSMS 运行时显示。但我们没有这样的查询,我们从不直接从 SSMS 运行任何查询。

请提出解决此问题的方法。

【问题讨论】:

  • 你能给我们看一张常规标签的截图吗?

标签: azure azure-sql-database biztalk biztalk-2013r2


【解决方案1】:

看起来您正在达到 100 的 maxConnectionPoolSize 并且在这种情况下增加超时将无济于事。您可以使用非池连接,但在开始之前先看看为什么有 100 多个连接到数据库。这可能是因为数据库的性能问题(可能需要扩展)/应用程序问题(锁定在表上并阻止其他查询或连接未关闭,因此它们都不会返回到池中)。

对于性能问题,请查询 sys.resource_stats 以查看您的数据库资源利用率是否达到峰值。您还可以使用 sys.dm_Exec_Requests 和 sys.dm_tran_locks 来查看其他连接在做什么。我相信您在使用完它们后会关闭应用中的连接(否则它们不会返回到池中)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2021-06-28
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多