gpt4 book ai didi

sql-server - 实体命令执行异常 : Azure SQL with Entity Framework slow and rejecting requests

转载 作者:行者123 更新时间:2023-12-02 08:04:25 25 4
gpt4 key购买 nike

在过去的几天里,我们开始收到 Entity Framework 与 Azure SQL 数据库通信时抛出的间歇性异常。它抛出的异常与我们的代码特别相关,但消息是:

An error occurred while executing the command definition. See the inner exception for details. Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The wait operation timed out

显然,对数据库的请求已超时,但它突然开始发生,并且以前从未发生过。最近几天,我们发现平均响应时间也有所增加: Azure SQL Response time最佳响应时间并不那么快,因为它们需要一些细化和优化,但您可以看到显着的增长。

我们的移动应用程序在启动时从我们的 API 请求大量信息,并发出许多请求,这些请求似乎都失败了,几分钟后,单独发出这些请求就可以正常工作了。

对于这里可能发生的事情有什么想法吗? Azure 门户中没有任何错误,除了我们的 API 响应速度比正常情况慢的通知(我们知道!)

最佳答案

令人烦恼的是,这是我第二次遇到这个问题,因此值得发帖。

这是您的数据库层和 DTU 的结果Azure 为您提供的限制。

A DTU is a unit of measure for the performance of a service tier and is a summary of several database characteristics. Each service tier has a certain number of DTUs assigned to it as an easy way to compare the performance level of one tier versus another. From: Azure SQL Database "DTU percentage" metric

关于发生的事情的线索可以在 here 中找到。 :

When your workload exceeds the amount of any of these resources, your throughput is throttled - resulting in slower performance and timeouts.

我们使用的是基本层数据库,因此我们的限制是 5 DTU,并且当应用程序启动并达到此上限时,我们一次请求大量数据(诚然太多)。 Azure SQl 限制了我们的查询,减慢了某些查询的速度并拒绝了其他查询。记得之前有类似的事情,我在 Azure 门户中检查了 DTU 图表,但我一定是在查看更长的时间范围,因此我看不见使用量的大峰值。

我们暂时解决了这个问题,方法是将 Azure 数据库层和 DTU 限制从 5 增加到 20(4 倍性能),从而阻止了所有异常和失败的请求。

由于 EntityFramework 提供的模糊异常和缓慢的请求,这是一个特别烦人的问题。 Azure SQL 将来最好包含一些有关 DTU 上限的信息。

我们为防止这种情况添加的另一件事是一个警报,如果我们的 DTU 使用率再次超过 80%,它将在将来通知我们。请参阅 Azure 门户 > AzureSQL 数据库 > 监视 > 警报规则。 Azure DTU cap alert

在我看来,Azure 应该自动创建此警报,我确信被烧伤的不仅仅是我!

关于sql-server - 实体命令执行异常 : Azure SQL with Entity Framework slow and rejecting requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47756603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com