【发布时间】:2018-03-08 01:27:18
【问题描述】:
我正在构建一个有点小的服务结构应用程序,自从我转换为服务结构后,我一直对缓慢的启动时间感到恼火,这不仅是在发布之后,而且在 10 到 15 分钟不活动之后也是如此。
我添加了一个项目,其唯一目的是访问每个服务并每 10 秒发出一个小型数据库请求,认为这将保持应用程序和 ef 运行。这帮助我避免了超时,现在第一个请求在 5-15 秒范围内。经过一些预热后,请求通常在 300 毫秒范围内,因此它们是非常简单的请求,并且服务之间没有太多通信(总共 4 个服务)。
经过大量搜索,我发现了一个似乎可以正常工作的分析器,因为大多数人都不喜欢 Visual Studio 中的那个。不幸的是,它并没有真正说那么多,只是它等待线程很多并且它似乎不在我的代码中。我所有的外部请求都使用等待异步。此外,在遵循请求时,似乎缺少信息......
起初我认为缓慢可能来自 ef 生成搜索查询,所以我迁移该部分以使用 dapper 代替(完整的请求仍然使用一些 ef)但这并没有真正改变任何东西。
该应用程序具有所有最新的服务结构、dotnet 核心、ef 核心、应用程序洞察包。除了一个验证令牌之外的所有服务都是无状态的。当然还有内置的发布模式。
此时我有点迷茫,因为我找不到它这么慢的原因。在过去,这通常是因为 IIS 关闭应用程序或回收它,但现在当它不存在时,它会是什么?
【问题讨论】:
-
您是将其部署到 Azure 中的集群还是仅在本地计算机上体验?
-
我在本地和将它部署到 3 个服务器集群时都遇到了这个问题,这不是 azure 中的
-
假设您的流量是负载平衡的...在您的服务解析到的节点上进行一些日志记录。可能是请求 1 到节点 A(15 秒响应),2 到节点 B(15 秒响应),3 到节点 A(现在 300 毫秒响应),4 到节点 C(15 秒响应)。看看我在说什么?
标签: entity-framework-core azure-service-fabric asp.net-core-2.0 .net-core-2.0