- Démarrage
- Prérequis
- Meilleures pratiques
- Installation
- Mise à jour en cours
- Serveur d'identité
- Résolution des erreurs de démarrage

Guide d'installation d'Orchestrator
La page suivante décrit les exigences recommandées pour les environnements de production à grande échelle et fournit un ensemble des meilleures pratiques visant à améliorer leurs performances.
Pour exécuter 10K de Attended Robot ou 1K de Unattended Robot , vous avez besoin de :
- Un équilibreur de charge F5
- Orchestrator : au moins 6 nœuds qui s'exécutent sur des machines avec un processeur 8 cœurs et 16 Go de RAM.
- Robots : machines avec processeur 4 cœurs et 16 Go de RAM
-
SQL Server - machines avec 4 prises / 16 cœurs processeur CPU (par défaut 8 prises/16 cœurs processeur cpu) et 64 Go de RAM
Remarque : Pour réduire les conflits d'allocation du serveur SQL dans un environnement hautement concourant, veillez à utiliser un nombre optimal de fichiers de données tempdb de taille égale.
UiPathOrchestrator.dll.config
Orchestrator afin d’améliorer les performances dans un environnement de production à grande échelle.
Activez Redis
<appSettings>
<add key="LoadBalancer.UseRedis" value="true"/>
<add key="LoadBalancer.Redis.ConnectionString" value="your.redis.cache.windows.net:6379,password=***"/>
</appSettings>
<appSettings>
<add key="LoadBalancer.UseRedis" value="true"/>
<add key="LoadBalancer.Redis.ConnectionString" value="your.redis.cache.windows.net:6379,password=***"/>
</appSettings>
Spécifiez une taille maximale de pool dans la chaîne de connexion
<connectionStrings>
<add name="Default" providerName="Microsoft.Data.SqlClient" connectionString="Data Source=<SQLServer>;Initial Catalog=<dbName>;User ID=<username>;Password=***;Max Pool Size=1000" />
</connectionStrings>
<connectionStrings>
<add name="Default" providerName="Microsoft.Data.SqlClient" connectionString="Data Source=<SQLServer>;Initial Catalog=<dbName>;User ID=<username>;Password=***;Max Pool Size=1000" />
</connectionStrings>
Écrivez des journaux de Robot à Elasticsearch et utilisez AsyncWrapper
- Ajoutez ou modifiez la cible d’enregistrement pour Elasticsearch en utilisant les paramètres suivants.
xml <nlog> <targets> <target name="robotElasticBuffer" xsi:type="AsyncWrapper" overflowAction="Grow" queueLimit="10000" batchSize="1000" timeToSleepBetweenBatches="1"> <target xsi:type="ElasticSearch" name="robotElastic" uri="elastic.example.com:9200" requireAuth="true" username="***" password="***" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" /> </target> </targets> </nlog>
xml <nlog> <targets> <target name="robotElasticBuffer" xsi:type="AsyncWrapper" overflowAction="Grow" queueLimit="10000" batchSize="1000" timeToSleepBetweenBatches="1"> <target xsi:type="ElasticSearch" name="robotElastic" uri="elastic.example.com:9200" requireAuth="true" username="***" password="***" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" /> </target> </targets> </nlog> - Ajoutez ou modifiez la règle des journaux de robots pour écrire des journaux uniquement sur la cible indiquée dans l’exemple précédent. Cela désactive automatiquement la cible de base de données par défaut.
xml <nlog> <rules> <logger name="Robot.*" ruleName="primaryRobotLogsTarget" final="true" writeTo="robotElasticBuffer" /> </rules> </nlog>
xml <nlog> <rules> <logger name="Robot.*" ruleName="primaryRobotLogsTarget" final="true" writeTo="robotElasticBuffer" /> </rules> </nlog> - Configurez Orchestrator pour lire les journaux de ElasticSearch.
<appSettings> <add key="Logs.RobotLogs.ReadTarget" value="robotElasticBuffer" /> </appSettings>
<appSettings> <add key="Logs.RobotLogs.ReadTarget" value="robotElasticBuffer" /> </appSettings>
Utilisez un stockage à haut débit
Vous pouvez opter pour Azure Blob Storage à cette fin.
<appSettings>
<add key="Storage.Type" value="Azure" />
<add key="Storage.Location" value="DefaultEndpointsProtocol=https;AccountName=yourBlob;AccountKey=yourKey;EndpointSuffix=core.windows.net" />
</appSettings>
<appSettings>
<add key="Storage.Type" value="Azure" />
<add key="Storage.Location" value="DefaultEndpointsProtocol=https;AccountName=yourBlob;AccountKey=yourKey;EndpointSuffix=core.windows.net" />
</appSettings>
Augmentez le temps de mise en cache des paramètres d’application
Vous pouvez configurer Orchestrator pour utiliser des caches en mémoire qui réduisent le nombre d'appels à Redis. Par exemple, si vous les configurez pour qu'ils expirent toutes les 30 minutes, cela signifie que, lorsque vous modifiez un paramètre au niveau de l'application, il peut ne pas être pris en compte avant la fin de l'intervalle de 30 minutes.
Le délai d'expiration que vous fixez ici peut varier en fonction du délai que vous pouvez tolérer, mais même une mise en cache de 5 minutes peut améliorer considérablement les performances.
<appSettings>
<add key="Caching.MultiTier[AbpApplicationSettingsCache]" value="Memory" />
<add key="Caching.MultiTier[AbpApplicationSettingsCache].ExpiresAfter" value="0:30:00" />
<add key="Caching.MultiTier[AbpTenantSettingsCache]" value="Memory"/>
<add key="Caching.MultiTier[AbpTenantSettingsCache].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[AbpZeroTenantFeatures]" value="Memory"/>
<add key="Caching.MultiTier[AbpZeroTenantFeatures].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[AbpZeroRolePermissions]" value="Memory"/>
<add key="Caching.MultiTier[AbpZeroRolePermissions].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[LicenseKeys]" value="Memory"/>
<add key="Caching.MultiTier[LicenseKeys].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[TenantLicense]" value="Memory"/>
<add key="Caching.MultiTier[TenantLicense].ExpiresAfter" value="0:30:00"/>
</appSettings>
<appSettings>
<add key="Caching.MultiTier[AbpApplicationSettingsCache]" value="Memory" />
<add key="Caching.MultiTier[AbpApplicationSettingsCache].ExpiresAfter" value="0:30:00" />
<add key="Caching.MultiTier[AbpTenantSettingsCache]" value="Memory"/>
<add key="Caching.MultiTier[AbpTenantSettingsCache].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[AbpZeroTenantFeatures]" value="Memory"/>
<add key="Caching.MultiTier[AbpZeroTenantFeatures].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[AbpZeroRolePermissions]" value="Memory"/>
<add key="Caching.MultiTier[AbpZeroRolePermissions].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[LicenseKeys]" value="Memory"/>
<add key="Caching.MultiTier[LicenseKeys].ExpiresAfter" value="0:30:00"/>
<add key="Caching.MultiTier[TenantLicense]" value="Memory"/>
<add key="Caching.MultiTier[TenantLicense].ExpiresAfter" value="0:30:00"/>
</appSettings>
Augmenter la valeur MinWorkerThreads
MinWorkerThreads
aide avec les scénarios de montée en puissance.
<appSettings>
<add key="ThreadPool.MinWorkerThreads" value="50" />
</appSettings>
<appSettings>
<add key="ThreadPool.MinWorkerThreads" value="50" />
</appSettings>
Désactivez l'IP pour DNS Resolving dans Audit
Si vous n'êtes pas dans un réseau d'entreprise ou si vous n'avez pas besoin de voir les noms DNS des IP enregistrés dans l'Audit, vous pouvez désactiver la résolution.
<appSettings>
<add key="Audit.UseDnsResolving" value="false" />
</appSettings>
<appSettings>
<add key="Audit.UseDnsResolving" value="false" />
</appSettings>
Passez à une stratégie plus rapide pour aller chercher l’adhésion aux groupes
Directory.ActiveDirectory.GroupMembershipFetchStrategy
et Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours
s’appliquent uniquement à l’adaptateur AD hérité. Vous ne devez utiliser ces paramètres que si vous avez effectué une mise à niveau depuis une version d’Orchestrator dans laquelle AD était activé vers 2021.10 ou une version ultérieure. Pour obtenir des instructions sur la vérification de votre type d’adaptateur AD, consultez la section Vérification du type d’adaptateur Active Directory.
Directory.ActiveDirectory.GroupMembershipFetchStrategy
vers TokenGroups
dans la table [identity].[Settings]
, exécutez :
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.GroupMembershipFetchStrategy' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='TokenGroups' WHERE [Key]='Directory.ActiveDirectory.GroupMembershipFetchStrategy' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.GroupMembershipFetchStrategy', 'TokenGroups', 1)
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.GroupMembershipFetchStrategy' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='TokenGroups' WHERE [Key]='Directory.ActiveDirectory.GroupMembershipFetchStrategy' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.GroupMembershipFetchStrategy', 'TokenGroups', 1)
Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours
sur 4 heures dans la table [identity].[Settings]
, exécutez :
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='4' WHERE [Key]='Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours', '4', 1)
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='4' WHERE [Key]='Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours', '4', 1)
Ajuster le délai d'expiration du cache du domaine AD
Directory.ActiveDirectory.CacheExpirationSeconds
s’applique uniquement à l’adaptateur AD hérité. L’utilisation de ce paramètre est recommandée uniquement si vous avez mis à niveau une version d’Orchestrator avec AD activé vers la version 2021.10 ou ultérieure. Pour obtenir des instructions sur la vérification de votre type d’adaptateur AD, consultez la section Vérification du type d’adaptateur Active Directory.
Directory.ActiveDirectory.CacheExpirationSeconds
dans la table [identity].[Settings]
. La valeur par défaut de ce paramètre est de 43 200 secondes (12 heures). Pour désactiver la mise en cache du domaine AD, vous devez définir ce paramètre sur 0.
Pour définir ce paramètre sur 7 jours, exécutez :
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='604800' WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.CacheExpirationSeconds', '604800', 1)
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='604800' WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.CacheExpirationSeconds', '604800', 1)
Pour désactiver la mise en cache du domaine AD, exécutez :
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='0' WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.CacheExpirationSeconds', '0', 1)
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='0' WHERE [Key]='Directory.ActiveDirectory.CacheExpirationSeconds' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.CacheExpirationSeconds', '0', 1)
Améliorer les performances de chargement du domaine AD
Directory.ActiveDirectory.DomainFilter
s’applique uniquement à l’adaptateur AD hérité. L’utilisation de ce paramètre est recommandée uniquement si vous avez mis à niveau une version d’Orchestrator avec AD activé vers la version 2021.10 ou ultérieure. Pour obtenir des instructions sur la vérification de votre type d’adaptateur AD, consultez la section Vérification du type d’adaptateur Active Directory.
Pour activer le filtre du domaine, exécutez :
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='<comma separated list of domain FQDNs>' WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.DomainFilter', '<comma separated list of domain FQDNs>', 1)
SELECT * FROM [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
IF @@ROWCOUNT>0
UPDATE [identity].[Settings] SET [Value]='<comma separated list of domain FQDNs>' WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
ELSE
INSERT INTO [identity].[Settings] ([Key], [Value], [PartitionId]) VALUES ('Directory.ActiveDirectory.DomainFilter', '<comma separated list of domain FQDNs>', 1)
Pour désactiver la mise en cache du domaine AD, utilisez :
DELETE [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
DELETE [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1
Désactivez Signalr pour les événements de changement de licence de Robot
Lors d'une montée en puissance agressive, les événements d'acquisition de licence exerceraient une pression importante sur le fond de panier SignalR Redis. Pour atténuer cela, l'événement peut être désactivé, ce qui fait que l'interface utilisateur d'acquisition de licence n'est plus mise à jour en temps réel. Cependant, lorsque vous avez des robots de 100 000 tonnes de capacité, la mise à jour de l'écran en temps réel n'a que peu de valeur.
<appSettings>
<add key="Scalability.SignalR.Browser.RobotLicenseChangeEventEnabled" value="false" />
</appSettings>
<appSettings>
<add key="Scalability.SignalR.Browser.RobotLicenseChangeEventEnabled" value="false" />
</appSettings>
Activer la mise en cache des packages NuGet
Cette modification assure la mise en cache côté serveur du contenu des packages. Cela peut s’avérer utile lorsque le partage de fichiers ne peut pas suivre le rythme du débit de téléchargement des packages.
<<add key="NuGet.Caching.Enabled" value="true" />
<add key="NuGet.Caching.MaxCacheSize" value="104857600" /><!-- (100 MiB) -->
<add key="NuGet.Caching.MaxPackageSize" value="4194304" /><!-- (4 MiB) -->
<add key="NuGet.Caching.AbsoluteExpirationRelativeToNow" value="00:10:00" /><!-- (1 min) -->
<<add key="NuGet.Caching.Enabled" value="true" />
<add key="NuGet.Caching.MaxCacheSize" value="104857600" /><!-- (100 MiB) -->
<add key="NuGet.Caching.MaxPackageSize" value="4194304" /><!-- (4 MiB) -->
<add key="NuGet.Caching.AbsoluteExpirationRelativeToNow" value="00:10:00" /><!-- (1 min) -->
NuGet.Caching.Enabled
devrait suffire à activer la fonctionnalité. Vous n’avez qu’à ajuster le reste des paramètres affichés dans l’exemple ci-dessus si vous souhaitez modifier les valeurs par défaut, par exemple, augmenter la taille du cache ou les limites de taille des packages.
Activez le cache local dans les déploiements Azure PaaS
Définissez la configuration suivante comme un "sticky slot" sur le créneau de production du service Orchestrator App Service.
WEBSITE_LOCAL_CACHE_OPTION = Always
WEBSITE_LOCAL_CACHE_SIZEINMB = 1000
WEBSITE_LOCAL_CACHE_OPTION = Always
WEBSITE_LOCAL_CACHE_SIZEINMB = 1000
Configurez le démarrage des créneaux dans les déploiements Azure PaaS
Définissez la configuration suivante sur les créneaux de production et de déploiement Hotswap de l'Orchestrator App Service. Pendant le déploiement, cela permettra de démarrer l'application, en minimisant l'impact sur les performances causé par la redirection du trafic vers une application figée.
WEBSITE_SWAP_WARMUP_PING_PATH = /api/status
WEBSITE_SWAP_WARMUP_PING_STATUSES = 200
WEBSITE_SWAP_WARMUP_PING_PATH = /api/status
WEBSITE_SWAP_WARMUP_PING_STATUSES = 200
Utilisez Azure SignalR Service dans les déploiements Azure PaaS
L'utilisation du service Azure SignalR dans un déploiement Azure peut réduire considérablement la charge sur les serveurs web. Voir Scalability.AzureSignalR.ConnectionString pour plus de détails sur le paramètre.
<appSettings>
<add key="LoadBalancer.UseRedis" value="true"/>
<add key="Scalability.AzureSignalR.ConnectionString" value="**myAzureSignalRConnectionString" />
</appSettings>
<appSettings>
<add key="LoadBalancer.UseRedis" value="true"/>
<add key="Scalability.AzureSignalR.ConnectionString" value="**myAzureSignalRConnectionString" />
</appSettings>
Ajuster l’intervalle et la taille de vidage pour le point de terminaison SubmitLogs
UiPath.Orchestrator.dll.config
et configurez-les en fonction de vos besoins :
-
RobotsLogs.Flush.Interval
<add key="RobotsLogs.Flush.Interval" value="0" />
<add key="RobotsLogs.Flush.Interval" value="0" />
Pour en savoir plus sur ce paramètre, consultez RobotsLogs.Flush.Interval.
-
RobotsLogs.Flush.BatchSize
<add key="RobotsLogs.Flush.BatchSize" value="100" />
<add key="RobotsLogs.Flush.BatchSize" value="100" />
Pour en savoir plus sur ce paramètre, voir RobotsLogs.Flush.BatchSize.
AppSettings.Production.json
devraient se traduire par une amélioration des performances dans les environnements de production à grande échelle.
Spécifiez une taille maximale de pool dans la chaîne de connexion
"ConnectionStrings": {
"DefaultConnection": "Data Source=dbServer;Initial Catalog=UiPath_is;User ID=username;Password=****;Max Pool Size=1000"
}
"ConnectionStrings": {
"DefaultConnection": "Data Source=dbServer;Initial Catalog=UiPath_is;User ID=username;Password=****;Max Pool Size=1000"
}
Activez Redis
"LoadBalancerSettings": {
"RedisConnectionString": "yourRedis:6379,password=****",
"UseRedis": "true"
}
"LoadBalancerSettings": {
"RedisConnectionString": "yourRedis:6379,password=****",
"UseRedis": "true"
}
L’interface utilisateur d’Orchestrator vous permet de prendre les mesures suivantes afin d’améliorer les performances dans les environnements de production à grande échelle :
- Désactivez l’espace de travail personnel ;
- Désactivez Autoriser la connexion Web pour les utilisateurs de robots ;
- Attribuez des rôles de Robot et d’Automation User aux utilisateurs de robots.
- Exigences recommandées pour les environnements de production à grande échelle
- Modifications Orchestrator pour une meilleure performance
- Activez Redis
- Spécifiez une taille maximale de pool dans la chaîne de connexion
- Écrivez des journaux de Robot à Elasticsearch et utilisez AsyncWrapper
- Utilisez un stockage à haut débit
- Augmentez le temps de mise en cache des paramètres d’application
- Augmenter la valeur MinWorkerThreads
- Désactivez l'IP pour DNS Resolving dans Audit
- Passez à une stratégie plus rapide pour aller chercher l’adhésion aux groupes
- Ajuster le délai d'expiration du cache du domaine AD
- Améliorer les performances de chargement du domaine AD
- Désactivez Signalr pour les événements de changement de licence de Robot
- Activer la mise en cache des packages NuGet
- Activez le cache local dans les déploiements Azure PaaS
- Configurez le démarrage des créneaux dans les déploiements Azure PaaS
- Utilisez Azure SignalR Service dans les déploiements Azure PaaS
- Ajuster l’intervalle et la taille de vidage pour le point de terminaison SubmitLogs
- Changements de serveur d’identité pour une performance améliorée
- Spécifiez une taille maximale de pool dans la chaîne de connexion
- Activez Redis
- Modifications Orchestrator pour une meilleure performance