Jak profilovat Web API

Připravili jsme pro vás postup, jak získat data pro profilovací nástroj ABRA Gen z Web API požadavků.

1. Předpoklady

  • Profilování budeme testovat na spojení s názvem demodata.
  • V konfiguračním souboru Nexus.CFG máme v sekci [Client] nastavenou hodnotu parametru Local na 0.
  • Ve spojení demodata bude uživatel Supervisor, který bude mít zatržen parametr Přhlášení nevizuálního uživatele API.
  • Bude spuštěn aplikační server.

2. Nastavení profilování

V definičním souboru APIServer.yaml odkomentujeme parametr profilePath (zrušíme pouze křížek - mezery před parametrem zachováme) a nastavíme v něm cestu, kam se budou ukládat profilovací data. Například:

#  path where some profile files are stored(f.e. by using of profile parameter)
  profilePath: c:\ABRA_24.2\APILogs\Profiler\

Cílový adresář musíme založit ručně.

3. Spuštění Web API

Nyní v instalačním adresáři ABRA Gen spustíme jako administrátor v Powershellu Web API:

.\APIServer.ps1 -Action app

4. Profilování Web API jednoho požadavku

Profilování jednoho požadavku Web API probíhá tak, že se za dotazovaný endpoint přidá obecný parametr profiling=1. Tím se vyvolá profiler a do uvedené cesty u parametru profilePath v souboru APIServer.yaml se zapíše profilovací soubor ABRA Gen profileru, zdrojový požadavek (bez případných autentikačních dat) a odpověď.

Pokud se profiluje, tak se do odpovědi vrací hlavička X-Request-ID (pokud neposílá klient svou, Web API si vygeneruje náhodnou, což lze poznat dle prefixu api_).

Toto X-Request-ID se pak může použít jako hodnota parametru id nového endpointu /debugging/profiling?id=… Stažená binární dalta lze pak po uložení otevřít v ABRA Gen Profileru (nástroj je možné vyvolat v rámci systému ABRA Gen klávesovou zkratkou Ctrl+Alt+Shift+F12).

Pokud se navíc k dotazu připojí parametr alldata=1, všechny soubory týkající se profilovaného požadavku se zabalí do souboru zip a vrátí se tento zip (aktuálně výše zmíněný dotaz a odpověď).

Profilování nad číselníkem zemí.

GET http://localhost:80/demodata/countries?take=10&profiling=1

Vrácenou hlavičku X-Request-ID=API_695b476e497a4662aeb6f67745b99fdd použít jako parametr:

GET http://localhost:80/demodata/debugging/profiling?id=API_695b476e497a4662aeb6f67745b99fdd

Případně zabalenou v zipu.

GET http://localhost:80/demodata/debugging/profiling?id=API_695b476e497a4662aeb6f67745b99fdd&alldata=1

Nepovinný parametr filename umožňuje nastavit název souboru v hlavičce Content-Disposition.

nepovinný parametr datamode s hodnotami binaryprofdata a jsonprofdata umožňuje vrátit data profileru binárně nebo ve formátu json.

5. Globální profilování

Pro globální profilování, které profiluje vše, když je profiler spuštěný, je nutné mít přidělené právo Spouštět a zastavovat globální profilování. Vždy je ale možné mít spuštěný profiler jen jednou (z hlediska systému ABRA Gen se jedná o globální zdroj).

Profilování se zapíná příkazem /maintenance/profiler/start (POST) a zastavuje /maintenance/profiler/stop (POST). Konkrétní stav lze zjistit příkazem /maintenance/profiler/status (GET).

Když profiler zastavíme příkazem /maintenance/profiler/stop, je vrácen binárně soubor s profilovanými daty. Předpokládá se, že tento soubor uložíme s koncovkou .ap. Následně jej pak lze otevřít v ABRA Gen Profileru (nástroj je možné vyvolat v rámci systému ABRA Gen klávesovou zkratkou Ctrl+Alt+Shift+F12).

Nepovinný parametr filename umožňuje nastavit název souboru v hlavičce Content-Disposition.

nepovinný parametr datamode s hodnotami binaryprofdata a jsonprofdata umožňuje vrátit data profileru binárně nebo ve formátu json.

Spuštění globálního profilování:

POST http://localhost:80/demodata/maintenance/profiler/start

Zastavení globálního profilování:

POST http://localhost:80/demodata/maintenance/profiler/stop

Zjištění stavu globálního profilování:

POST http://localhost:80/demodata/maintenance/profiler/status