Limity automatizačního serveru

Zde naleznete vysvětlení týkající se omezení automatizačního serverů, jeho limitů a návod, jak zprovoznit až 80 funkčních spojení na jednom automatizačním serveru.

Problematika limitů automatizačního serveru

Pro každé nadefinované spojení v ABRA Gen si Automatizační server (AutoServer.exe i AutoServerS.exe) ke svému vlastnímu procesu ihned automaticky spouští další proces AutoServerSlave.exe. A to i pro ta spojení, u nichž v agendě Nastavení automatizačního serveru není vytvořen žádný záznam nebo je ve stavu Aktivní = Ne. Tyto obslužné procesy, v případě že v daném spojení nastane čas pro spuštění naplánované úlohy, vyvolá další proces AutoServerSlave.exe, který již úlohu vykoná. Ve výchozím nastavení Automatizačního serveru mohou být tyto procesy až tři a po vykonání úlohy zůstávají dále běžet a použijí se pro další naplánované úlohy v daném spojení.

 

Pokud tedy máme při výchozím nastavení AutoServeru pouze jedno spojení, vzniknou minimálně tři procesy (jeden AutoServer.exe/AutoServerS.exe, jeden obslužný AutoServerSlave a jeden AutoServerSlave vykonávající naplánované úlohy) a maximálně pět procesů (jeden AutoServer.exe/AutoServerS.exe, jeden obslužný AutoServerSlave a tři AutoServerSlave vykonávající naplánované úlohy). Pokud máme tímto způsobem nadefinováno např. deset spojení, maximální počet procesů Autoserverů je již padesát.

 

Zde již může architektura Automatizačního serveru začít narážet na limity zdrojů operačního systému Windows. Ty mají daný určitý maximální počet procesů, které mohou být spuštěny současně, a to z důvodu počtu zdrojů tzv. User Objektů a GDI objektů. Po dosažení horní hranice User Objektů nebo GDI objektů začnou spuštěné procesy ve Windows fungovat chybně a ve výsledku to může vést až k nestabilitě celého operačního systému.

Obecně lze říct, že pokud běží Automatizační server typicky jako služba (AutoServerS.exe), pohybuje se maximální počet souběžně spuštěných procesů Automatizačního serveru okolo osmdesáti až devadesáti v závislosti na ostatních spuštěných procesech a množství User Objektů a GDI objektů, které spotřebovávají.

V praxi to znamená, že ve výchozím stavu by mělo být možné bezpečně provozovat Automatizační server přibližně na dvaceti spojeních. Ve výchozím nastavení zůstávají AutoServerSlave.exe procesy po vykonání úlohy spuštěné a maximální počet souběžně vykonávaných úloh v jednom spojení je nastaven na tři.

Optimalizace automatizačního serveru až pro 80 spojení

V případě, že je potřeba, aby Automatizační server zpracovával více spojení, lze provést následující optimalizační kroky:

  • V každém ze spojení v agendě Nastavení automatizačního serveru nastavit Maximální počet souběžně spuštěných úloh na 1.
  • Napříč všemi spojeními nastavit v agendě Naplánované úlohy čas spouštění jednotlivých úloh tak, aby se v jeden čas nezpracovávalo více úloh z různých spojení.
  • Zkontrolovat, že na žádné z úloh v žádném spojení není nastaven parametr Při vynechání naplánovaného spuštění úlohy spustit co nejdříve. Tento parametr může způsobit to, že v případě výpadku Automatizačního serveru se po jeho znovu spuštění začne najednou zpracovávat velké množství nezpracovaných úloh.
  • V konfiguračním souboru AutoServer.cfg nastavit parametr ForcedReleaseProxy na hodnotu 1. Díky tomu bude každý AutoServerSlave.exe proces po vykonání jedné naplánované úlohy ukončen a nebude zbytečně spotřebovávat GDI a User objekty.

V testovacím prostředí bylo možné takto provozovat na Automatizačním serveru současně až osmdesát spojení najednou. V praxi bude toto číslo pravděpodobně nižší, v závislosti na ostatních běžících procesech.

Jak je uvedeno výše, ve výchozím stavu Automatizační server obsluhuje všechna spojení definovaná v ABRA Gen. Nastavením v konfiguračním souboru AutoServer.cfg lze tuto množinu zmenšit a určit pouze ty spojení, která budou zpracovávána. Pro všechna ostatní spojení se nebudou Naplánované úlohy spouštět, a to ani obslužný proces AutoServerSlave. Tímto je opět možné některé GDI a User objekty ušetřit, případně rozložit spouštění Naplánovaných úloh na více fyzických nebo virtuálních počítačů. A to tak, že na každém z těchto strojů by v konfiguračním souboru AutoServer.cfg byla vyjmenována pouze konkrétní spojení, která se zde budou zpracovávat.

Jak optimálně nastavit Automatizační server je individuální a závisí to na počtu spojení, počtu naplánovaných úloh a rozložení jejich spouštění v čase. Obecně ale platí:

  • Ve výchozím nastavení lze bezpečně provozovat automatizační server s maximálně 20 spojeními v jednom operačním systému.
  • Přenastavením lze dosáhnout funkčnosti s přibližně 80 spojeními na jednom operačním systému. V ABRA Gen může být nadefinováno i více spojení, ale ty nad 80 je třeba vyřadit explicitně z používání AutoServeru.
  • V případě, že je třeba provozovat automatizační server nad více než 80 spojeními, je třeba provozovat automatizační server současně na více počítačích.

Příklad nastavení konfiguračního souboru AutoServer.cfg:

[AutoServer]
ForcedReleaseProxy=1

Connection=Firma1
Connection1=Firma2
Connection2=Firma3
Connection3=Firma4
					
Connection79=Firma80

V případě potřeby provozovat Automatizační server nad více spojeními, tak na dalším počítači:

[AutoServer]
ForcedReleaseProxy=1

Connection=Firma81
Connection1=Firma82
Connection2=Firma83
Connection3=Firma84

Connection79=Firma160

Více informací k nastavení AutoServer.cfg najdete zde.