Anti-Muster: Nicht verwendete NodeJS API-Proxys bereitgestellt lassen

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

Eines der einzigartigen und nützlichen Features von Apigee Edge ist die Möglichkeit, eine NodeJS-Anwendung in einen API-Proxy einzubinden. So können Entwickler ereignisgesteuerte serverseitige Anwendungen mit Edge erstellen.

Anti-Pattern

Bei der Bereitstellung von API-Proxys werden diese so konfiguriert, dass sie API-Anfragen verarbeiten können. Jeder der bereitgestellten API-Proxys wird in den Laufzeitspeicher des Nachrichtenprozessors geladen, um die API-Anfragen für den jeweiligen API-Proxy verarbeiten zu können. Daher steigt die Arbeitsspeichernutzung zur Laufzeit mit der Anzahl der bereitgestellten API-Proxys. Wenn nicht verwendete API-Proxys bereitgestellt bleiben, kann dies zu einer unnötigen Nutzung des Laufzeitspeichers führen.

Bei NodeJS-API-Proxys gibt es eine weitere Auswirkung.

Die Plattform startet für jeden bereitgestellten NodeJS-API-Proxy eine „Node-App“. Eine Node-App ähnelt einer eigenständigen Node-Serverinstanz im JVM-Prozess des Nachrichtenprozessors.

Für jeden bereitgestellten NodeJS-API-Proxy startet Edge also einen Node-Server, um Anfragen für die entsprechenden Proxys zu verarbeiten. Wenn derselbe NodeJS-API-Proxy in mehreren Umgebungen bereitgestellt wird, wird für jede Umgebung eine entsprechende Node-App gestartet. In Situationen, in denen viele NodeJS-API-Proxys bereitgestellt, aber nicht verwendet werden, werden mehrere Node-Apps gestartet. Nicht verwendete NodeJS-Proxys führen zu inaktiven Node-Apps, die Arbeitsspeicher verbrauchen und sich auf die Startzeiten des Anwendungsprozesses auswirken.

Verwendete Proxys Nicht verwendete Proxys
# Proxys # Bereitgestellte Umgebungen # Node-Apps gestartet # Proxys # Bereitgestellte Umgebungen # Node-Apps gestartet
10 Entwicklung, Test, Produktion (3) 10 × 3=30 12 Entwicklung, Test, Produktion (3) 12 × 3=36

In der Abbildung oben werden 36 nicht verwendete Node-Apps gestartet, die Systemspeicher belegen und sich negativ auf die Startzeiten des Prozesses auswirken.

Auswirkungen

  • Hohe Arbeitsspeichernutzung und kaskadierende Auswirkungen auf die Fähigkeit der Anwendung, weitere Anfragen zu verarbeiten
  • Wahrscheinliche Auswirkungen auf die Leistung der API-Proxys, die tatsächlich Traffic verarbeiten

Best Practice

  • Bereitstellung aller nicht verwendeten API-Proxys aufheben
  • Mit dem Analytics-Dashboard zur Proxy-Leistung ermitteln, welche Proxys keinen Traffic verarbeiten, und die Bereitstellung der nicht benötigten Proxys aufheben

Weitere Informationen