Protokolování volání ORDA na serveru

Automaticky přeloženo z Deepl

Od svého uvedení na trh popularita ORDA nepřestává růst a nyní se hojně používá na produkčních serverech. S verzí 4D v20 vám nabízíme 2 vylepšení způsobu zaznamenávání požadavků ORDA na straně serveru. Prvním z nich je vylepšení protokolu požadavků, který nyní poskytne více informací o voláních ORDA. Druhým je přidání protokolu ORDA na straně serveru, který je podobný protokolu ORDA na straně klienta. Dovolte mi, abych vás s těmito novými funkcemi seznámil.

První vylepšení se týká protokolu požadavků. Protokol požadavků je nesmírně důležitý, pokud chcete optimalizovat svůj produkční server. Poskytuje vám informace o přijatých požadavcích, době, kterou trvalo jejich vyřízení, a o datech odeslaných po síti. Je také důležité vzít v úvahu, že aktivace protokolů má dopad na výkon. Protokol požadavků je velmi optimalizovaný a jako takový může být použit na produkci, aniž by příliš ovlivnil výkon serveru.

Pokud na serveru aktivujete protokol požadavků, uvidíte, že požadavky ORDA jsou zaznamenávány s id požadavku 14000 (id požadavků najdete zde). V dalším sloupci máte k dispozici také informace o datové třídě nebo atributu. Tento řádek například označuje, že byl změněn atribut Employee.Bloby (tučně je uvedeno id požadavku a obsah extra sloupce):


Druhé vylepšení se používá poměrně snadno. Protokoly ORDA na straně serveru můžete aktivovat voláním funkce startRequestLog v datovém skladu. Příklad: V případě, že se jedná o požadavek na zpracování dat, je možné použít funkci RequestReadq:

ds.startRequestLog()

Pokud provedete tento kousek kódu, budou všechny požadavky ORDA zaznamenány uvnitř souboru ORDAlog.jsonl. Protokoly ORDA na straně serveru používají syntaxi řádků json, přičemž každý řádek je popisem json odeslaného požadavku. Zde je příklad takového řádku:

{
"url": "rest/Company[4]",
"systemUserName": "nbrachfogel",
"userName": "Designer",
"machineName": "OPT9010-1168",
"taskID": 5,
"taskName": "P_1",
"startTime": 2023-05-22T14:29:00.289",
"response": "2023-05-22T14:29:00.289", "response": "2023-05-22T14:29:00.289", "response": "2023-05-22T14:29:00.289": {
"status": 200,
"body": {
"__entityModel": "Company",
"__DATACLASS": "Company",
"__KEY": "4",
"__TIMESTAMP": "2023-03-30T14:16:47.337Z",
"__STAMP": 1,
"ID": 4,
"Name": "Compagnie 31740",
"Turnover": 32205,
"MyEmployees": {
"__deferred": {
"uri": "/rest/Company[4]/MyEmployees?$expand=MyEmployees"
}
}
}
},
"sequenceNumber": 60,
"duration": 282
}
Můžete si zobrazit informace o uživateli, dobu trvání provedení požadavku a odpověď ze serveru. K dispozici máte také sekvenční číslo, které je stejné jako číslo, které najdete v protokolu požadavků, a propojuje oba protokoly (pokud není aktivován protokol požadavků, je sekvenční číslo v protokolu ORDA vynecháno).

Protokol ORDA na straně serveru je velmi zajímavý pro řešení problémů. Poskytuje podrobné informace o požadavcích, které server přijímá, a o jeho odpovědích. Zabírá však mnoho prostředků, a to jak procesoru, tak místa na disku, takže byste jej měli na produkčním serveru používat s opatrností.

Tyto 2 protokoly lze také aktivovat pomocí konfiguračního souboru protokolu nebo přímo na kartě údržby v okně správy 4D Serveru.

blank
Tlačítko Spustit protokoly požadavků a ladění aktivuje protokol požadavků i protokol ORDA.

Očekáváme, že tyto 2 funkce vám pomohou při řešení problémů a optimalizaci volání ORDA. Pokud máte připomínky nebo dotazy, neváhejte je vznést na fóru 4D.

Nicolas Brachfogel
• Product Owner & Senior Developer • Nicolas Brachfogel nastoupil do 4D v roce 2017 jako senior vývojář (4D server a sítě). Jako Product Owner, který řídí vydání Apple Silicon, má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací a také zajišťuje, aby implementace funkcí vyhovovaly potřebám zákazníků. Nicolas, absolvent Institut Supérieur d'Informatique Appliquée (INSIA), začal svou kariéru jako softwarový vývojář v roce 2001. Po několika letech kódování v Javě a C++ se specializoval na vývoj klient-server pro společnosti zabývající se videohrami. Jako serverový vývojář/architekt úspěšně pracoval na serverových architekturách mnoha her (Dofus Arena, Drakerz, Trivial Pursuit Go!).