【问题标题】:.NET v2 IIS timeout after 30 seconds (not always).NET v2 IIS 30 秒后超时(并非总是如此)
【发布时间】:2020-08-08 06:16:33
【问题描述】:

首先我想指出,在我看来,这不是一个重复的问题,因为标题中描述的超时发生了 8/10 次。所以并非总是如此。

我们有一个带有 Dapper 的 .NET 应用程序,但应用程序突然在 30 秒后停止了请求。我们之前遇到过这个问题,并通过更新 IIS 中的所有limit 选项并将executionTimeout="00:30:00" 添加到 IIS 的web.conf 文件来修复它。 (在 aspNet 部分)。

以上解决了我们的一个应用程序的问题,包括这个。但突然之间,这个问题似乎又回来了。

奇怪的是它并不总是发生。有时应用程序会继续请求 40、50 或更多秒。但是 8/10 次它会在 30 秒后停止。

我们还在调用查询的代码中设置了executionTimeout。这是设置为 1800 秒。

在我们看来,这一定是 IIS 问题,甚至可能是数据库问题 (MSSQL)?但是我们不确定下一步该做什么,因为它并不总是会发生。如果是 IIS 的问题,我们测试一千次不总是会发生吗?

如果有人能帮助我们解决这个问题,我们将不胜感激。

提前致谢!

编辑代码sn-ps:

C#:

var result = await _connection.QueryAsync<Sample>(sql, commandTimeout: 1800);

web.config:

<aspNetCore ... executionTimeout="00:30:00" ... />

【问题讨论】:

  • 这里的变量太多无法确定。我会通过尝试加快流程来解决这个问题。您的客户会喜欢它,您不必担心超时。也就是说……如果直接在 SQL Server Management Studio 中运行查询,执行需要多长时间?
  • executionTimeout 控制HTTP Runtime in IIS 的超时时间。您可能正在寻找 SqlCommand's CommandTimeout property,默认为 30 秒。
  • @GeorgeMastros 不幸的是,查询非常复杂,数据库非常庞大。所以这会导致时间变慢,但客户对此表示满意。该查询需要一段时间才能直接在 Management Studio 中执行(仅在生产数据库上)。测试数据库用时不到一秒。 (更少的数据)。
  • @AlwaysLearning 我们使用 Dapper,它被称为 executionTimeout。它在运行查询的代码中设置为 1800 秒。
  • 如果在commandconnectioncontext 这三个参数上指定超时会发生什么?

标签: sql-server iis .net-core windows-server


【解决方案1】:

您应该在调用 dapper.net 的 Execute 方法时尝试增加 CommandTimeout

更多详情请参考这些网址

dapper-tutorial.net/knowledge-base/8794858/

adjusting-commandtimeout-in-dapper-net

【讨论】:

    【解决方案2】:

    “requestTimeout”在由于某个资源上的锁与您开始执行查询所需的锁不兼容而无法开始查询时引发错误。

    因此,如果 30 秒已过,则查询正在运行,但执行时间可能大于 30 秒...

    【讨论】:

    • 非常感谢的一个答案是给我们用于查询的隔离级别,特别是如果您已激活 SNAPSHOT 隔离级别,这将避免大部分“requestTimout”。
    • 这是正确的。我们看到查询在 MSSQL 的活动监视器中运行。但是请求仍然在 30 秒后停止 8/10 次。
    • 活动监视器无法准确显示所有问题。你能执行这个查询吗?
    • SELECT session_id, blocking_session_id, q.text FROM sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS q WHERE session_id > 50 AND database_id > 5 AND session_id @@SPID AND blocking_session_id > 0;
    • 不幸的是,这没有返回任何结果。
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多