首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心:呼叫之间有延迟的空闲超时

ASP.NET核心:呼叫之间有延迟的空闲超时
EN

Stack Overflow用户
提问于 2018-07-31 19:17:54
回答 2查看 1.4K关注 0票数 5

我有一个在Kestrel(Ubuntu)下运行的ASP.NET核心Web API,我遇到了一个奇怪的情况:当我运行前20个API调用的系列时,前3-5个调用相当慢,然后响应时间还可以。然后我做了一个短暂的延迟(可能是一分钟甚至更短),并再次运行一系列API调用,并且前几个调用相当慢,只有在前3-5个调用之后,响应时间才变得正常。

最初,我认为问题出在Kestrel配置中,所以我进行了以下设置:

代码语言:javascript
复制
   var host = new WebHostBuilder()
        .UseKestrel(options =>
        {
            options.Limits.MaxConcurrentConnections = 200;
            options.Limits.MaxConcurrentUpgradedConnections = 200;
            options.Limits.MaxRequestBodySize = 10000;
            options.Limits.MinRequestBodyDataRate = new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)));
            options.Limits.MinResponseDataRate = new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)));
            options.Limits.KeepAliveTimeout = TimeSpan.FromDays(2);
        })
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

它帮助我让我的服务更快地工作,但这个问题仍然存在。

该服务的基本逻辑如下: 1)获取请求对象2)将其解析到POCO类的实例中3)调用具有多个选择的DB以获取所有需要的数据(为此,我使用Dapper和允许一次运行多个SQL查询的方法) 4)使用新接收的数据更新对象的实例,并将对象插入到DB中

就这样。

我不知道是什么原因造成了这种延迟(空闲时间)。

我有一个猜测,也许我应该有一些虚拟调用来保持服务的运行。因此,我添加了一个包含计时器作业的Singleton,用于每分钟查询数据库中的一些查找数据。但这并没有帮助。

然后,我尝试添加另一个计时器作业来查询步骤N3中所需的数据,只查询数据库中的第一条记录,没有一些特定的请求参数,但它没有帮助,而且它开始工作得更慢。

我还在表上添加了索引,以使SELECTs更快地工作,另外,我向所有SELECTs添加了WITH(NOLOCK)语句,但它没有帮助。

有什么想法吗,伙计们?

EN

回答 2

Stack Overflow用户

发布于 2018-08-01 15:51:53

当查询执行获取时间而不是期望时,则其抛出超时异常。我们可以通过设置commandtimeout=0来解决它。当我们设置commandtimeout=0时,它将在完成执行后响应。

票数 0
EN

Stack Overflow用户

发布于 2018-08-01 15:47:17

我还在想,也许它是关于连接字符串的,如下所示:

Data Source=mydbserver;Initial Catalog=db1;Persist Info=True;User Data Source=mydbserver;Initial Catalog=db1;Persist Info=True;User最大池Size=200;Pooling=true;Connection Timeout=30;Connection Lifetime=0;Min池Size=0;

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51612152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档