我们如何提高部署到服务矩阵集群的应用程序的早期响应能力

时间:2018-07-12 10:17:27

标签: azure-service-fabric jit ngen

我们有一个系统,该系统分为多个服务,这些服务作为连续交付管道的一部分部署到服务结构集群中。部署完成后,我们确实会受到影响,因为在一切“预热”之前,系统的运行速度明显变慢。

我们认为此问题与执行路径中每个服务的新版本的JITing有关,但它也可能具有序列化器生成的元素。

通常,我们希望使用ngen.exe来缓解与即时编译相关的问题,但是我们不知道如何结合服务结构来实现。

  • 服务结构中的服务在什么信任级别下运行?由于ngen需要完全信任

  • 是否可以部署服务,但是在新版本的服务为请求提供服务之前,可以先部署该服务吗?

  • 如果回滚升级,是否必须执行清理?甚至有可能进行清理吗?

非常感谢您抽出宝贵的时间,如果您需要更多信息,我们将竭诚为您提供。

2 个答案:

答案 0 :(得分:0)

您可以在此处使用的参数是控制应用程序升级的参数之一- HealthCheckWaitDurationSec 。根据{{​​3}}文档-

  

“该持续时间也可以视为申请时间   应该运行才能被认为是健康的。”

对于Application upgrade parameters

  

默认情况下,Service Fabric应用程序使用以下帐户运行:   Fabric.exe进程在其下运行。 Service Fabric还提供了   以本地用户或系统帐户运行应用程序的功能。在应用程序清单中,您可以在“主体”部分中定义运行服务或保护资源所需的用户帐户。

至于清理,这取决于您的意思。代码工件最终将被清除。您还可以在自己的部署脚本中使用 UnregisterUnusedApplicationVersionsAfterUpgrade 参数来注销升级完成后存在的所有未使用的应用程序版本,这将有助于清理不再使用的东西。

答案 1 :(得分:0)

第一季度:

  

服务结构中的服务在什么信任级别下运行?由于ngen需要完全信任。

来自here的引用:

  

默认情况下,Service Fabric应用程序以运行Fabric.exe进程的帐户运行。

通常是 NetworkService

第二季度:

  

是否可以部署服务,但是在新版本的服务为请求提供服务之前,先进行部署?

是的。您可以使用SetupEntryPoint在提升的特权下使用 ngen 执行脚本。