Registrazione delle chiamate ORDA sul server

Tradotto automaticamente da Deepl

Da quando è stato rilasciato, la popolarità di ORDA non ha mai smesso di crescere e ora è ampiamente utilizzato nei server di produzione. Con 4D v20, sono stati apportati due miglioramenti al modo in cui le richieste ORDA vengono registrate sul lato server. Il primo è un miglioramento del log delle richieste che ora fornisce maggiori informazioni sulle chiamate ORDA. Il secondo è l’aggiunta di un registro ORDA lato server simile al registro ORDA lato client. Vi presento queste nuove funzionalità.

Il primo miglioramento riguarda il log delle richieste. Il log delle richieste è estremamente importante se si vuole ottimizzare il server di produzione. Fornisce informazioni sulle richieste ricevute, sul tempo impiegato per gestirle e sui dati inviati in rete. È anche importante considerare che l’attivazione dei log ha un impatto sulle prestazioni. Il log delle richieste è molto ottimizzato e come tale può essere usato in produzione senza impattare troppo sulle prestazioni del server.

Se si attiva il log delle richieste sul server, si nota che le richieste ORDA vengono registrate con un id di richiesta tra i 14000 (è possibile trovare gli id delle richieste qui). Nella colonna extra si trovano anche informazioni sulla classe di dati o sull’attributo. Ad esempio, questa riga indica che l’attributo Employee.Bloby è stato modificato (in grassetto l’id della richiesta e il contenuto della colonna extra):


Il secondo miglioramento è abbastanza facile da usare. È possibile attivare i log ORDA lato server richiamando la funzione startRequestLog sul datastore. Ad esempio:

ds.startRequestLog()

Eseguendo questo frammento di codice, tutte le richieste ORDA saranno registrate nel file ORDAlog.jsonl. I log di ORDA sul lato server utilizzano la sintassi delle righe json, in cui ogni riga è una descrizione json della richiesta inviata. Ecco un esempio di riga:

{
"url": "rest/Company[4]",
"systemUserName": "nbrachfogel",
"userName": "Designer",
"machineName": "OPT9010-1168",
"taskID": 5,
"taskName": "P_1",
"startTime": "2023-05-22T14:29:00.289",
"response": {
"status": 200,
"body": {
"__entityModel": "Company",
"__DATACLASS": "Company",
"__KEY": "4",
"__TIMESTAMP": "2023-03-30T14:16:47.337Z",
"__STAMP": 1,
"ID": 4,
"Name": "Compagnie 31740",
"Fatturato": 32205,
"MyEmployees": {
"__deferito": {
"uri": "/rest/Company[4]/MyEmployees?$expand=MyEmployees"
}
}
}
},
"sequenceNumber": 60,
"duration": 282
}
Si possono vedere le informazioni sull’utente, la durata dell’esecuzione della richiesta e la risposta del server. È presente anche il numero di sequenza, che è lo stesso numero che si trova nel log delle richieste, che collega entrambi i log (se il log delle richieste non è attivato, il numero di sequenza viene omesso nel log ORDA).

Il log ORDA lato server è molto interessante per la risoluzione dei problemi. Fornisce informazioni dettagliate sulle richieste ricevute dal server e sulle relative risposte. Tuttavia, richiede molte risorse, sia di CPU che di spazio su disco, per cui è consigliabile utilizzarlo con cautela sul server di produzione.

Questi due registri possono essere attivati anche con il file di configurazione dei registri o direttamente dalla scheda Manutenzione della finestra di amministrazione di 4D Server.

blank
Il pulsante Avvia i registri di richiesta e di debug attiverà sia il registro di richiesta che quello di ORDA.

Ci aspettiamo che queste due funzioni vi aiutino a risolvere i problemi e a ottimizzare le chiamate ORDA. Se avete commenti o domande, non esitate a farle nei forum di 4D.

Nicolas Brachfogel
- Proprietario del prodotto e sviluppatore senior - Nicolas Brachfogel è entrato in 4D nel 2017 come Senior Developer (4D Server e networking). In qualità di Product Owner per gestire il rilascio di Apple Silicon, si occupa di scrivere le storie degli utenti e di tradurle in specifiche funzionali, nonché di assicurarsi che le implementazioni delle funzionalità soddisfino le esigenze dei clienti. Diplomato all'Institut Supérieur d'Informatique Appliquée (INSIA), Nicolas ha iniziato la sua carriera come sviluppatore di software nel 2001. Dopo diversi anni di codifica in Java e C++, si è specializzato nello sviluppo di client-server per aziende di videogiochi. Come sviluppatore/architetto di server, ha lavorato con successo alle architetture server di molti giochi (Dofus Arena, Drakerz, Trivial Pursuit Go!).