Abonnieren

UiPath Installation and Upgrade

Die UiPath-Installations- und Upgrade-Anleitung

Best Practices f├╝r Leistung

Auf der folgenden Seite werden die empfohlenen Anforderungen f├╝r gro├če Produktionsumgebungen beschrieben und eine Reihe von bew├Ąhrten Methoden zur Verbesserung ihrer Leistung beschrieben.

­čôś

Hinweis:

Weitere Informationen zu den Mindestanforderungen f├╝r den Orchestrator finden Sie auf den Seiten Hardwareanforderungen und Softwareanforderungen.

Empfohlene Anforderungen f├╝r gro├če Produktionsumgebungen

F├╝r die Ausf├╝hrung von 10.000┬áAttended-Robotern oder 1.000 Unattended-Robotern ben├Âtigen Sie:

  • An F5 load balancer
  • Orchestrator ÔÇô mindestens 6 Knoten, die auf Maschinen mit 8 CPU-Kernen und 16 GB RAM ausgef├╝hrt werden
  • Roboter ÔÇô Maschinen mit 4 CPU-Kernen und 16 GB RAM
  • SQL Server - Maschinen mit 4 Sockets/16 CPU-Kernen (Standard 8 Sockets/16 CPU-Kerne) und 64 GB RAM

­čôś

Hinweis:

Um SQL Server-Zuweisungskonflikte in einer sehr gleichzeitigen Umgebung zu reduzieren, stellen Sie sicher, dass Sie eine optimale Anzahl von tempdb-Datendateien mit gleicher Gr├Â├če verwenden.

Orchestrator-Änderungen für verbesserte Leistung

In diesem Abschnitt sind eine Reihe von Anpassungen aufgef├╝hrt, die Sie an der Datei UiPathOrchestrator.dll.config von Orchestrator vornehmen k├Ânnen, um die Leistung in einer gro├čen Produktionsumgebung zu verbessern.

Aktivieren von Redis

<appSettings>
  <add key="LoadBalancer.UseRedis" value="true"/>
  <add key="LoadBalancer.Redis.ConnectionString" value="your.redis.cache.windows.net:6379,password=***"/>
</appSettings>

Geben Sie eine gro├če maximale Poolgr├Â├če in der Verbindungszeichenfolge an.

<connectionStrings>
  <add name="Default" providerName="System.Data.SqlClient" connectionString="Data Source=<SQLServer>;Initial Catalog=<dbName>;User ID=<username>;Password=***;Max Pool Size=1000" />
</connectionStrings>

Schreiben von Roboterprotokollen in Elasticsearch und Verwenden von AsyncWrapper

  • F├╝gen Sie das Protokollierungsziel f├╝r Elasticsearch mithilfe der folgenden Parameter hinzu oder ├Ąndern Sie es.
<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>
  • F├╝gen Sie die Roboterprotokollregel hinzu oder ├Ąndern Sie sie, um Protokolle nur in das im vorherigen Beispiel gezeigte Ziel zu schreiben. Dadurch wird das Standard-Datenbankziel automatisch deaktiviert.
<nlog>
  <rules>
    <logger name="Robot.*" ruleName="primaryRobotLogsTarget" final="true" writeTo="robotElasticBuffer" />
  </rules>
</nlog>
  • Konfigurieren Sie Orchestrator, um Protokolle aus ElasticSearch zu lesen.
<appSettings>
   <add key="Logs.RobotLogs.ReadTarget" value="robotElasticBuffer" />
</appSettings>

Verwenden eines Speichers mit hohem Durchsatz

Sie k├Ânnen sich zu diesem Zweck f├╝r Azure Blob Storage entscheiden.

<appSettings>
  <add key="Storage.Type" value="Azure" />
  <add key="Storage.Location" value="DefaultEndpointsProtocol=https;AccountName=yourBlob;AccountKey=yourKey;EndpointSuffix=core.windows.net" />
</appSettings>

Wartungsmodus deaktivieren

Wenn Sie den Wartungsmodus nicht verwenden, k├Ânnen Sie ihn deaktivieren.

<appSettings>
  <add key="MaintenanceMode.Enabled" value="false" />
</appSettings>

Erh├Âhen der Zwischenspeicherungszeit von Anwendungseinstellungen

Sie k├Ânnen Orchestrator so konfigurieren, dass einige In-Memory-Caches verwendet werden, die die Anzahl der Aufrufe von Redis reduzieren. Wenn Sie sie z. B. so konfigurieren, dass sie alle 30 Minuten ablaufen, bedeutet dies, dass eine ├änderung an einer Einstellung auf Anwendungsebene m├Âglicherweise erst nach dem 30-Minuten-Intervall widergespiegelt wird.
Die hier festgelegte Ablaufzeit kann variieren, je nachdem, welche Verz├Âgerung Sie tolerieren k├Ânnen, aber selbst eine Zwischenspeicherungszeit von 5 Minuten kann die Leistung erheblich verbessern.

<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>

Erh├Âhen des MinWorkerThreads-Werts

Das Festlegen eines h├Âheren Werts f├╝r MinWorkerThreads hilft in Anlaufszenarien.

<appSettings>
  <add key="ThreadPool.MinWorkerThreads" value="50" />
</appSettings>

Optimieren von Quarz f├╝r sehr hohen Durchsatz

Dieser Schritt ist nur notwendig, wenn Sie eine sehr hohe Anzahl von Triggern haben, die ausgel├Âst werden, z. B. in der Gr├Â├čenordnung von 2.000 pro Minute.

<quartz>
  <add key="quartz.scheduler.batchTriggerAcquisitionMaxCount" value="15" />
  <add key="quartz.threadPool.threadCount" value="15" />
  <add key="quartz.jobStore.misfireThreshold" value="3600000" />
  <add key="quartz.jobStore.clusterCheckinInterval" value="60000" />
  <add key="quartz.jobStore.clustered" value="true" />
</quartz>

Deaktivieren von IP-zu-DNS-Aufl├Âsung in der Pr├╝fung

Wenn Sie sich nicht in einem Unternehmensnetzwerk befinden oder die DNS-Namen von IPs, die in der Pr├╝fung aufgezeichnet wurden, nicht sehen m├╝ssen, k├Ânnen Sie die L├Âsung deaktivieren.

<appSettings>
  <add key="Audit.UseDnsResolving" value="false" />
</appSettings>

Wechseln zu einer schnelleren Strategie zum Abrufen der Gruppenmitgliedschaft

­čôś

Hinweis:

Directory.ActiveDirectory.GroupMembershipFetchStrategy und Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours gelten nur f├╝r den Legacy AD-Adapter. Sie sollten diese Einstellungen nur verwenden, wenn Sie von einer Orchestrator-Version mit aktiviertem AD auf┬á2021.10 oder h├Âher aktualisiert haben.

Um Directory.ActiveDirectory.GroupMembershipFetchStrategy in der Tabelle [identity].[Settings] auf TokenGroups festzulegen, f├╝hren Sie Folgendes aus:

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)

Um Directory.ActiveDirectory.AuthorizationGroupsCacheExpirationHours in der Tabelle [identity].[Settings] auf vier Stunden festzulegen, f├╝hren Sie Folgendes aus:

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)

Ablaufzeit des AD Dom├Ąnen-Cache anpassen

­čôś

Hinweis:

Directory.ActiveDirectory.CacheExpirationSeconds gilt nur f├╝r den Legacy AD-Adapter. Sie sollten diese Einstellung nur verwenden, wenn Sie von einer Orchestrator-Version mit aktiviertem AD auf┬á2021.10 oder h├Âher aktualisiert haben.

Um die Ablaufzeit des AD Dom├Ąnen-Caches zu steuern, k├Ânnen Sie die Einstellung Directory.ActiveDirectory.CacheExpirationSeconds in der Tabelle [identity].[Settings] verwenden. Der Standardwert dieser Einstellung ist 43200┬áSekunden (12┬áStunden). Um das AD Dom├Ąnen-Caching zu deaktivieren, m├╝ssen Sie diese Einstellung auf┬á0 festlegen.

Um diese Einstellung auf sieben Tage festzulegen, f├╝hren Sie Folgendes aus:

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)

So deaktivieren Sie das AD Dom├Ąnen-Caching:

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)

Verbessern der Ladeleistung der AD-Dom├Ąne

­čôś

Hinweis:

Directory.ActiveDirectory.DomainFilter gilt nur f├╝r den Legacy AD-Adapter. Sie sollten diese Einstellung nur verwenden, wenn Sie von einer Orchestrator-Version mit aktiviertem AD auf┬á2021.10 oder h├Âher aktualisiert haben.

F├╝hren Sie Folgendes aus, um den Dom├Ąnenfilter zu aktivieren:

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)

So deaktivieren Sie das AD Dom├Ąnen-Caching:

DELETE [identity].[Settings] WHERE [Key]='Directory.ActiveDirectory.DomainFilter' and [PartitionId]=1

Deaktivieren von SignalR f├╝r Roboter-Lizenz├Ąnderungsereignisse

W├Ąhrend einer offensiven Anlaufphase w├╝rden die Lizenzerwerbsereignisse die SignalR Redis-Backplane erheblich unter Druck setzen. Um dies zu mildern, kann das Ereignis deaktiviert werden, was dazu f├╝hrt, dass die Lizenzierungsbenutzeroberfl├Ąche nicht mehr in Echtzeit aktualisiert wird. Wenn Sie jedoch 100.000 Roboter haben, ist diese Bildschirmaktualisierung in Echtzeit von geringem Wert.

<appSettings>
  <add key="Scalability.SignalR.Browser.RobotLicenseChangeEventEnabled" value="false" />
</appSettings>

Aktivieren der NuGet-Paketzwischenspeicherung

Diese Änderung stellt sicher, dass der Paketinhalt serverseitig zwischengespeichert wird, und kann sich als nützlich erweisen, wenn die Dateifreigabe nicht mit dem Paket-Download-Durchsatz mithalten kann.

<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) -->

Das Hinzuf├╝gen der Einstellung NuGet.Caching.Enabled sollte ausreichen, um die Funktion zu aktivieren. Sie m├╝ssen nur die restlichen Einstellungen anpassen, die im obigen Beispiel angezeigt werden, wenn Sie die Standardeinstellungen ├Ąndern m├Âchten, z.┬áB. die Gr├Â├če des Caches oder der Paketgr├Â├čenbeschr├Ąnkungen erh├Âhen m├Âchten.

Aktivieren des lokalen Caches in Azure PaaS-Bereitstellungen

Legen Sie die folgende Konfiguration f├╝r den Produktionsslot des Orchestrator App Service als angeheftet fest.

WEBSITE_LOCAL_CACHE_OPTION = Always
WEBSITE_LOCAL_CACHE_SIZEINMB = 1000

Konfigurieren von Slot Warm-Up in Azure PaaS-Bereitstellungen

Legen Sie die folgende Konfiguration sowohl f├╝r die Produktions- als auch f├╝r die Hotswap-Bereitstellungsslots des Orchestrator App Service fest. W├Ąhrend der Bereitstellung wird die Anwendung aufgew├Ąrmt, wodurch die Leistungseinbu├čen minimiert werden, die durch die Umleitung von Datenverkehr an eine kalte App verursacht werden.

WEBSITE_SWAP_WARMUP_PING_PATH = /api/status
WEBSITE_SWAP_WARMUP_PING_STATUSES = 200

Verwenden von Azure SignalR Service in Azure PaaS-Bereitstellungen

Using Azure SignalR Service in an Azure deployment can significantly reduce the load on the web servers. See Scalability.AzureSignalR.ConnectionString for more details on the setting.

<appSettings>
  <add key="LoadBalancer.UseRedis" value="true"/>
  <add key="Scalability.AzureSignalR.ConnectionString" value="**myAzureSignalRConnectionString" />
</appSettings>

Anpassen des Flush-Intervalls und der Gr├Â├če f├╝r den SubmitLogs-Endpunkt

Mit dieser ├änderung k├Ânnen Sie das Zeitrahmen-Batchfenster zum Sammeln von Protokollen aus dem Executor-Prozess steuern, bevor Sie den SubmitLogs-API-Endpunkt aufrufen. Aktivieren Sie die folgenden Einstellungen in UiPath.Orchestrator.dll.config und konfigurieren Sie sie entsprechend Ihren Anforderungen:

  • RobotsLogs.Flush.Interval
<add key="RobotsLogs.Flush.Interval" value="0" />

For more on this setting, see RobotsLogs.Flush.Interval.

  • RobotsLogs.Flush.BatchSize
<add key="RobotsLogs.Flush.BatchSize" value="100" />

For more on this setting, see RobotsLogs.Flush.BatchSize.

Identity Server-Änderungen für verbesserte Leistung

Die folgenden ├änderungen an der Datei AppSettings.Production.json von Identity Server sollten zu einer verbesserten Leistung in gro├čen Produktionsumgebungen f├╝hren.

Geben Sie eine gro├če maximale Poolgr├Â├če in der Verbindungszeichenfolge an.

"ConnectionStrings": {
    "DefaultConnection": "Data Source=dbServer;Initial Catalog=UiPath_is;User ID=username;Password=****;Max Pool Size=1000"
  }

Aktivieren von Redis

"LoadBalancerSettings": {
      "RedisConnectionString": "yourRedis:6379,password=****",
      "UseRedis": "true"
    }

Benutzeroberfl├Ąchenkonfigurations├Ąnderungen f├╝r verbesserte Leistung

Auf der Benutzeroberfl├Ąche von Orchestrator k├Ânnen Sie die folgenden Schritte ausf├╝hren, um die Leistung in gro├čen Produktionsumgebungen zu verbessern:

  • Deaktivieren des pers├Ânlichen Arbeitsbereichs;
  • Deaktivieren von Webanmeldung zulassen f├╝r Roboterbenutzer;
  • Weisen Sie Roboterbenutzern die Rollen Roboter und Automation User zu.

Aktualisiert vor 4 Monaten


Best Practices f├╝r Leistung


Auf API-Referenzseiten sind ├änderungsvorschl├Ąge beschr├Ąnkt

Sie k├Ânnen nur ├änderungen an dem Textk├Ârperinhalt von Markdown, aber nicht an der API-Spezifikation vorschlagen.