Tec*_*chy 12 azure asp.net-core-mvc asp.net-core
我有一个ASP.NET核心网站,有很多同时用户在白天崩溃很多次,我扩大规模,但没有运气.我被告知我的众多Azure支持人员,问题是我发送了大量的数据库调用,尽管创建索引后数据库利用率有所提高.你能不能告诉我你认为问题是什么,因为我已经尽了最大努力......我被告知我有"插座泄漏".
请注意:
我没有使用ConfigureAwait(false)
我没有使用"使用"语句或显式处理上下文
这是我的连接字符串如果有帮助...
Server=tcp:sarahah.database.windows.net,1433;Initial Catalog=SarahahDb;Persist Security Info=False;User ID=********;Password=******;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Max Pool Size=400;
Run Code Online (Sandbox Code Playgroud)
这些是一些代码示例:
在Startup.CS中:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
Run Code Online (Sandbox Code Playgroud)
主要课程:
private readonly ApplicationDbContext _context;
public MessagesController(ApplicationDbContext context, IEmailSender emailSender, UserManager<ApplicationUser> userManager)
{
_context = context;
_emailSender = emailSender;
_userManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)
这是一个重要的方法代码,例如:
string UserId = _userManager.GetUserId(User);
var user = await _context.Users.Where(u => u.Id.Equals(UserId)).Include(u => u.Messages).FirstOrDefaultAsync();
// some other code
return View(user.Messages);
Run Code Online (Sandbox Code Playgroud)
请告诉我,我已尽力了,但这对我的客户字体来说非常尴尬.
如果没有您看到的错误消息,您可以检查以下一些想法。
我首先转到 Azure 门户中 Web 应用程序的概述边栏选项卡。将监控图表更新为您遇到问题的时间段。你受CPU限制吗?你的记忆力耗尽了吗?另外,检查 HTTP 队列长度。如果您的 HTTP 队列真的很长,那是因为您的服务器在尝试处理请求时遇到了阻塞,并且用户遇到了超时问题。
接下来,跳转到 Azure 门户中 SQL Server 的“概述”边栏选项卡,然后查看资源利用率图表。将图表上的时间段设置为您遇到问题的时间段。您是否已为数据库确定了 DTU?如果是这样,则表明索引编制不佳、模式设计不佳,或者您的规模不够大,需要扩大规模。
如果尚未启用 ApplicationInsights,请启用它。您可以使用 ApplicationInsights API 将自己的跟踪语句插入到代码中。或者,您也许能够看到导致问题的异常,而无需自己进行跟踪。
检查您的 Web 应用程序的 Kudu 日志。
我同意 Tseng 的观点 - 您对 EF 和 .NET Core 的 DI 框架的使用看起来是正确的。
让我们知道故障排除的进展情况,并提供有关您所看到的错误类型的更多信息。祝你好运!
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |