【问题标题】:Web Services, ADO.NET Connection Pool, Timeout ErrorWeb 服务、ADO.NET 连接池、超时错误
【发布时间】:2009-04-08 17:47:44
【问题描述】:

如果我有一个只公开一个调用的 .asmx Web 服务。一种需要一些参数并将这些值作为记录插入 SQL Server 2005 表中的方法。该方法应该看起来如何与 ADO.NET 连接池尽可能“友好”?如果它可能每秒被调用 10 次(分散)到多个客户端,它应该是什么样子。我还需要调整其他设置吗?

目前我收到错误:

System.Web.Services.Protocols.SoapException:
服务器无法处理请求--> System.Data.SqlClient.SqlException: Timeout expired。操作前超时时间已过或服务器未响应。

如果连接池是问题所在,错误会有所不同吗? 如何判断这是连接池问题、SOAP 限制,还是我的数据库太忙以至于调用真的超时了?

【问题讨论】:

    标签: .net web-services ado.net soap connection-pooling


    【解决方案1】:

    您没有发布有关您正在做的事情的一些最重要的信息。它是一种网络方法这一事实是在转移注意力,它只是归结为一个数据库问题以及您对它的重视程度。

    您可能在这里遇到了连接问题,因为异常状态(而且我认为这与池没有任何关系)。您是否在尝试打开连接或尝试执行操作时收到此信息?每个都有一个单独的超时,因此最好显式打开连接然后调用操作,这样您就可以看到超时发生的位置。

    另外,我想看看您是否正在使用事务。如果这包含在连接中,并且操作超时,并且您正在使用事务,那么您是否使用事务来访问包含在事务中的其他任何地方(读取或写入)的表?那时可能会陷入僵局。

    除此之外,如果不是这种情况,那么这是一个连接问题,您必须查看机器和服务器是否配置正确(例如,您使用的是 tcp ip、命名管道还是共享内存) 用于数据库操作。

    【讨论】:

    • +1。感谢您排除网络服务。我正在使用 TCP/IP 并且没有事务。在另一台机器上的多维数据集构建活动之前,SSIS 包暂存数据可能会在这台机器上进行大量活动。由于我不在 BI 或 DBA 团队中,所以这些东西有点失控。
    • 下周我应该更深入地研究这段代码。我应该能够清理一两个方法并作为示例发布。有一些专有的东西散布在整个 Web 服务中。
    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2019-02-11
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多