我们有一个系统,该系统分为多个服务,这些服务作为连续交付管道的一部分部署到服务结构集群中。部署完成后,我们确实会受到影响,因为在一切“预热”之前,系统的运行速度明显变慢。
我们认为此问题与执行路径中每个服务的新版本的JITing有关,但它也可能具有序列化器生成的元素。
通常,我们希望使用ngen.exe来缓解与即时编译相关的问题,但是我们不知道如何结合服务结构来实现。
服务结构中的服务在什么信任级别下运行?由于ngen需要完全信任
是否可以部署服务,但是在新版本的服务为请求提供服务之前,可以先部署该服务吗?
如果回滚升级,是否必须执行清理?甚至有可能进行清理吗?
非常感谢您抽出宝贵的时间,如果您需要更多信息,我们将竭诚为您提供。
答案 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 执行脚本。