Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Una delle funzionalità uniche e utili di Apigee Edge è la possibilità di eseguire il wrapping di un'applicazione NodeJS in un proxy API. In questo modo, gli sviluppatori possono creare applicazioni lato server basate su eventi utilizzando Edge.
Antipattern
Il deployment dei proxy API è il processo che li rende disponibili per gestire le richieste API. Ogni proxy API di cui è stato eseguito il deployment viene caricato nella memoria di runtime del processore di messaggi per poter gestire le richieste API per il proxy API specifico. Pertanto, la memoria utilizzata di runtime aumenta con l'aumento del numero di proxy API di cui è stato eseguito il deployment. Se lasci il deployment di proxy API inutilizzati, puoi causare un utilizzo non necessario della memoria di runtime.
Nel caso dei proxy API NodeJS, c'è un'ulteriore implicazione.
La piattaforma avvia una "app Node" per ogni proxy API NodeJS di cui è stato eseguito il deployment. Un'app Node è simile a un'istanza del server dei nodi autonomo nel processo JVM del processore di messaggi.
In effetti, per ogni proxy API NodeJS di cui è stato eseguito il deployment, Edge avvia un server dei nodi per elaborare le richieste per i proxy corrispondenti. Se lo stesso proxy API NodeJS viene sottoposto a deployment in più ambienti, viene avviata un'app Node corrispondente per ogni ambiente. Nelle situazioni in cui sono presenti molti proxy API NodeJS di cui è stato eseguito il deployment ma non utilizzati, vengono avviate più app Node. I proxy NodeJS inutilizzati si traducono in app Node inattive che consumano memoria e influiscono sui tempi di avvio del processo dell'applicazione.
| Proxy utilizzati | Proxy inutilizzati | ||||
|---|---|---|---|---|---|
| # Proxy | # Ambienti di cui è stato eseguito il deployment | # nodeapps avviate | # Proxy | # Ambienti di cui è stato eseguito il deployment | # App Node avviate |
| 10 | dev, test, prod (3) | 10x3=30 | 12 | dev, test, prod (3) | 12x3=36 |
Nell'illustrazione sopra, vengono avviate 36 nodeapp inutilizzate, che utilizzano la memoria di sistema e hanno un effetto negativo sui tempi di avvio del processo.
Impatto
- Utilizzo elevato della memoria utilizzata ed effetto a cascata sulla capacità dell'applicazione di elaborare ulteriori richieste
- Probabile impatto sulle prestazioni dei proxy API che gestiscono effettivamente il traffico
Best practice
- Annulla il deployment di tutti i proxy API inutilizzati
- Utilizza la dashboard delle prestazioni dei proxy di Analytics per determinare quali proxy non gestiscono il traffico; annulla il deployment di quelli di cui non hai bisogno