从 .Net Core API 到 MSSQL 数据库的间歇性“连接超时已过期”

问题描述 投票:0回答:1

最近(上个月)我在 API 中遇到了问题,并检查了我看到的日志:

System.Data.SqlClient.SqlException(0x80131904):连接超时 已到期。尝试消耗时超时时间已过 登录前握手确认

  • 我已将连接池设置为3k,超时设置为60s。
  • 该 API 是部署在 Azure 上的 .Net Core 6 API
  • 数据库是 Azure SQL 数据库
  • 当您检查指标时,数据库方面似乎没有任何问题,一切都始终非常低。
  • 没有长时间运行的查询(对于非常具体的调用来说最长 3 秒)
  • 数据库配置为允许联网的 Azure 应用程序访问它(防火墙),这在大多数情况下都可以正常工作

前端有时会挂起,单个调用可能需要几分钟才能返回(通常需要 < 1 second). Upon checking the logs I see the error above.

注意: 当从已部署的 API 引发此错误时,数据库会做出响应,并且使用 sp_who2 时看不到那么多连接。我有 2 个 API 指向同一个数据库,并且无论发生什么事件,它们都会经历这种挂起/超时

据我所知,请求永远不会离开客户端(API),这可能是 Azure 网络问题吗?如果不是这个,有人知道为什么会发生这种情况吗?

c# sql-server .net-core azure-sql-database asp.net-core-6.0
1个回答
0
投票

部署在 Azure 上的 MSSQL Server

请提供更多详细信息。 Azure SQL 数据库?托管实例?或者 Azure VM 上的 SQL Server?或者其他什么,比如边缘/无服务器?

如果是前两者之一,那么属于第几层?什么版本,什么版本?

API 到底是什么?它是如何“部署在 Azure 上”的?

验证未为数据库设置自动关闭,这可能会导致第一个连接在等待数据库唤醒时超时。与可以自动暂停(或可以通过编程方式显式暂停)的无服务器/专用池类似。

© www.soinside.com 2019 - 2024. All rights reserved.