首页 \ 问答 \ 天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)

天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)

我们在azure服务结构集群中托管了大量基于owin的web api服务。 所有这些服务都已映射到关联负载均衡器中的不同端口。 创建集群时,有2个开箱即用的探测器。 它们是:FabricGatewayProbe和FabricHttpGatewayProbe。 我们添加了端口规则并在其中使用了FabricGatewayProbe。

出于某种原因,这些服务端点似乎将在一段时间不活动后进入休眠状态,因为这些服务的客户端正在超时。 我们尝试将负载均衡器空闲超时时间调整为30分钟(最大值)。 它似乎立即有所帮助,但只是短暂的一段时间,然后我们又回到了错误的时间。

我还应该在哪里寻找解决这个问题的方法?


We have bunch of owin based web api services hosted in azure service fabric cluster. All of those services have been mapped to different ports in associated load balancer. There are 2 out-of-the-box probes when cluster is created. They are: FabricGatewayProbe and FabricHttpGatewayProbe. We added our port rules and used FabricGatewayProbe in them.

For some reason, these service endpoints seem to be going to sleep after a period of inactivity because clients of those services are timing out. We tried adjusting load balancer idle time out period to 30 minutes (which is maximum). It seems to help immediately but only for a brief period and then we are back to time out errors.

Where else should I be looking for resolution of this problem?


原文:https://stackoverflow.com/questions/39710152
更新时间:2019-07-11 02:25

最满意答案

所以我们的评论更进一步,我同意文档可以解释,但在做了一些测试后我可以确认以下内容:

通过门户创建新集群时,它将为您提供1:1的规则与探测关系,并且在修改现有ARM模板之一时,我也能够重现您的问题,以使用与您相同的现有探针。

反思这是有意义的,因为探针实际上绑定到服务,如果您尝试共享不同端口上的规则探针,负载均衡器将如何知道其中一个服务是否实际启动,还有Service Fabric(取决于您的实例计数设置)将在节点之间移动服务。

因此,如果在不同节点上使用相同探针在不同端口上有两个服务,则不使用探针端口的服务将收到请求花费太长时间响应的错误。

有点长的啰嗦,所以希望快速插图将有助于表明我的意思。

在此处输入图像描述


So further to our comments I agree that the documentation is open to interpretation, but after doing some testing I can confirm the following:

When creating a new cluster via the portal it will give you a 1:1 relation of rule to probe and I have also been able to reproduce your issue when modifying one of my existing ARM templates to use the same existing probe as you have.

On reflection this makes sense as a probe is effectively being bound to a service, if you attempt to share a probe for rules on different ports how will the load balancer know if one of the services is actually up, also Service Fabric (depending on your instance count settings) will move the services between nodes.

So if you had two services on different ports using the same probe on different nodes the service not using the port from the probe will receive the error that the request took too long to respond.

A little long winded so hopefully a quick illustration will help show what I mean.

enter image description here

2016-09-29

相关问答

更多

Web Api和web ui在相同的应用程序/服务中(Web Api and web ui in same application/service)

正如其他人所提到的,您可以随心所欲地托管您的Angular Web应用程序; 在这方面,Service Fabric没有施加任何限制。 也就是说,在您的情况下,一个简单的解决方案是让您的前端Web应用程序和您的web api处于相同的无状态服务中。 基本上,您将此视为常规的旧ASP.NET MVC应用程序,而ASP.NET MVC使得在同一MVC项目中拥有API和Web UI变得相当容易。 以下是一些例子: 带有API和UI的ASP.NET 5 MVC应用程序: https : //github. ...

Service Fabric中的Web API损坏(Web API Corruption in Service Fabric)

当我使用格式错误的路由示例时,我也一样 〔路线( “/ API /信息”)] 是的 〔路线( “API /信息”)] I got same when I used badly formatted route example [Route("/api/info")] correct is [Route("api/info")]

Service Fabric群集陷入状态=部署(Service Fabric cluster stuck in status=Deploying)

尝试添加“NicPrefixOverride”,如此处所述,段落“模板”。 它将指示当您有多个网络适配器时要使用的网络。 (Windows容器功能添加网络适配器) Try adding "NicPrefixOverride" like mentioned here, paragraph 'Template'. It will indicate the network to use when you have multiple network adapters. (The Windows Conta ...

在本地托管的群集(与我的机器不同)上调试服务结构应用程序(Debugging a Service Fabric Application on a locally hosted cluster (different machine than mine))

我们的Visual Studio Service Fabric工具支持针对本地开发集群的调试以及使用Cloud Explorer进行配置和附加的针对Azure集群的远程调试。 我们不支持针对非本地开发群集的本地群集进行调试。 我们支持发布到本地群集! Our Visual Studio Service Fabric tools support debugging against a local dev cluster and remote debugging against Azure clust ...

使用Azure Active Directory和Azure移动服务对PHP Web App进行身份验证(Authenticating a PHP Web App with Azure Active Directory and Azure Mobile Services)

一种选择是让您的PHP应用程序使用Mobile Services JavaScript SDK提供一个页面并让它执行登录 。 您将获得与移动应用中相同的标记。 对于授权问题,只要您通过移动服务进行后续呼叫,您将获得与您在该服务上定义的完全相同的授权规则。 该令牌将受到客户端绑定,并且您可能希望将其还给您的服务器以进行呼叫。 实际的Mobile Services令牌位于client.currentUser.authenticationToken ,您可以将其设置为JavaScript代码中的cook ...

web services

Web Services是自包含的、模块化的应用程序,它可以在网络(通常为Web)中被描述、发布、查找以及调用。 Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 所谓Web服务,它是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项应用服务。(UDDI规范2.0) 商业需求 XML Web services是分布式计算的重要标准, ...

如何配置ASP.Net Core 2.0 API以将Azure AD用作身份提供者(How to configure an ASP.Net Core 2.0 API to use Azure AD as Identity Provider)

简而言之,您需要一个访问令牌。 你如何获得访问令牌? 通过OAuth客户端凭据等身份验证流程: https : //docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service 。 或者您可能需要使用OpenID Connect: https : //docs.microsoft.com/en-us/azure/active-directory/ ...

是否弃用Azure管理库以支持Azure Resource Manager?(Is Azure Management Library deprecated in favor of Azure Resource Manager?)

您可能已经知道Azure Management Library是Azure Service Management API (ASM)的包装器,它提供了基于REST的界面来管理底层基础架构。 旧Azure门户( https://management.azure.com )使用ASM API。 Azure Resource Manager API (ARM)是用于管理底层基础架构的基于REST的新方法。 ARM功能更强大,功能丰富,将继续使用。 新的Azure门户( https://portal.az ...

相关文章

更多

最新问答

更多
  • Android宽度:100%修复(网站接管问题)(Android width:100% fix (website takeover issue))
  • C ++函数/方法设计的良好实践(Good practice in C++ function/method design)
  • 计算其他表中不存在的所有记录 - SQL查询(Count all records that does not exist to other table - SQL Query)
  • 为什么我要用JPA共享ID?(Why do I get shared Ids with JPA?)
  • asp.net - 如何显示来自html格式的数据行的字段(asp.net - how to display a field from data row that is in html format)
  • 我们如何使用ActiveRecord从连接表中删除行?(How can we delete rows from a join table by using ActiveRecord?)
  • ng-class搞乱了类的顺序(ng-class messing with the order of classes)
  • oracle 12g无效数字错误(oracle 12g invalid number error)
  • 更改ng-src值onclick(Change ng-src value onclick)
  • 如何在android中自动添加自定义依赖项以创建新项目?(How to add custom dependencies automatically in android for ever a new project is created?)
  • datetime函数在PHP中(datetime function in php)
  • 在javascript中获取会话数组的值(in javascript get the value of a session array)
  • 如何在UTF8中编译LaTeX?(How can I compile LaTeX in UTF8? [closed])
  • Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)
  • Logcat错误:无法在android片段中加载视图(Logcat error: unable to load view in android fragments)
  • JavaFX的。(JavaFX. Adding items to the list in different threads is not working)
  • 从GDATA日历资源迁移到Google Calendar Resource api(Migrate from GDATA calendar resource to Google Calendar Resource api)
  • SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)
  • 我如何以编程方式添加一个listView列标题的点击事件(How can I add a listView column header a click event programmatically)
  • Wxpython:无法检索有关列表控件项XXX的信息(Wxpython: Couldn't retrieve information about list control item XXX)
  • 使用Tortoise SVN在SVN存储库中移动目录(Move Directory across SVN repository using Tortoise SVN)
  • 天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)
  • 我可以设置intelliJ来突出显示PHP编码风格吗?(Can I set intelliJ to highlight php coding style?)
  • 用javafx创建一个Truetype字体文件(Creating a Truetype Font file with javafx)
  • Spring ftp配置错误(Spring ftp configuration is wrong)
  • 使用gsub去除多个字符(Using gsub to strip multiple characters)
  • 续订推送证书并保持当前的App Store App正常工作(Renew Push certificate and keep current App Store App working)
  • js:ES5和ES6之间关于'this'关键字用法的一个令人困惑的观点(js: one confusing point about 'this' keyword usage between ES5 and ES6)
  • window.onload vs $(document).ready()(window.onload vs $(document).ready())
  • 在Swift中,如何声明一个符合一个或多个协议的特定类型的变量?(In Swift, how can I declare a variable of a specific type that conforms to one or more protocols?)